我有,如果我使用普通的旧的C,将实现为是否可以使用零长度数组成员编写“完整”C++类?
typedef struct {
...many other members here...
unsigned short _size;
char _buf[0];
} my_data;
我想怎么办,是一些数据类型基本上做出一个类并添加通常的运营商如少,平等,拷贝构造函数,运营商分配,等等。正如你可以想象的那样,我会在关联容器中使用类,例如std :: map,因为它的键。我需要缓冲区理想地位于对象本身的相同级别,否则当我必须比较它们中的两个(缓冲区)时,我会让CPU取指针并将其加载到内存中;我不想使用std :: vector,因为分配的内存不会与其余数据成员连续。
对我来说主要问题是,在C我会有一个函数,考虑到缓冲区的大小会为它分配适当的内存大小。在C++这样的事情是不能做到的。
我对不对? 干杯
零数组长度数组成员在C++中无效,因此标题中问题的答案为“否”。 – 2012-08-10 07:29:51
理论上 - 没有。实际上 - 是的,这绝对没有问题 – valdo 2012-08-10 07:30:39
'_buf'的目的是什么?也许你可以使用一些标准容器来代替? – 2012-08-10 07:32:25