c++中在结构体中定义的数组

STRUCT A
{
uint8 data[];
}
在c中可以 在c++中报错,请问在c++中怎么定义啊?
报错内容
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

第1个回答  2012-11-07
没法这样定义,你可以使用指针,然后new一个数组给他,例如:
STRUCT A
{
uint8 *pData;
}
A a;
a.pData = new uint8[100];本回答被提问者采纳
第2个回答  2012-11-07
根据提示信息,这里是相当于定义了一个大小为0的数组(非标准扩展,应该有的编译器可以这么干)。

我的分析是:
1.你的C编译器将大小为0的数组,看成是一个指针,即uint8 data[]相当于uint8* data;

2.你的C++编译器是不允许这么做的,因为数组大小为0时,COPY和赋值操作,会引发错误。本回答被网友采纳
第3个回答  2012-11-07
不能定义未知大小的数组
第4个回答  2012-11-07
数组内应该有元素,否则会报错……
第5个回答  2012-11-07
在哪里你也不能定义 数组大小未知的 静态数组