c++中在构造体里面定义数组
c++中在结构体里面定义数组typedef struct _A{UINT8lengthUINT8data[]}A这样在c里面写没问题 但是在c++
c++中在结构体里面定义数组
typedef struct _A
{
UINT8length;
UINT8data[];
}A;
这样在c里面写没问题
但是在c++里面会报错
warning C4200: nonstandard extension used : zero-sized array in struct/union
1> Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
请问为什么?怎么修改呢?
[解决办法]数组长度必须在编译时确定
虽然动态数组已经出现在标准里很长时间,但一直没有普及,至少我不懂。但即使是动态数组,也必须在定义时给出数组长度,只是这个长度可以在运行时再确定而已。
在C里面,这样定义的“数组”实际上是指向结构体后面空间的指针,是一种巧妙的用法
在C++里面,不允许这样定义
[解决办法]数组元素不确定,为什么不尝试用指针呢?
typedef struct _A {
UINT8 length;
UINT8* data;
}A;
[解决办法]UINT8 data[];
data 数组大小必须确定
数组元素不确定的话 可使用vector 容器吧
[解决办法]既然用的是C++,那就用标准库的容器吧,除非对速度有非常高的要求,否则都不需要使用数组。