首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++中在构造体里面定义数组

2013-11-01 
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++,那就用标准库的容器吧,除非对速度有非常高的要求,否则都不需要使用数组。

热点排行