我有这个结构。我想做的是有一个连续的 ram 空间来 memcpy 它们在硬盘上。我有一个动态创建的字符串,我将用作键。我想创建一个可以执行此操作的结构。我使用了模板并制作了这个。
template <class ItemType> struct INXM_Node {
ItemType key;
int left;
int right;
int next; // Used for queue.
} ;
我在运行:
INXM_Node<char[100]> *root = new INXM_Node<char[100]>();
在我尝试用变量更改 100 之前,一切都很好。然后我得到错误:
'char [(((long unsigned int)(((long int)attrLength) - 1)) + 1u)]' is a variably modified type
我运行的是:
sizeof(INXM_Node<char[attrLength]>);
我将 attrLength 作为函数的参数。 我需要使用不同的字符数组生成多个结构。
最佳答案
问题是编译器需要在编译时知道ItemType
是什么类型。当您使用变量时,它无法知道。编译器尝试专门创建将在程序执行中使用的每个 ItemType
。如果您使用的是可变长度 char
数组,编译器不知道要为该特定 ItemType
分配多少内存。您可以考虑使用 std::string
关于c++ - char[] 中的可变修改类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207912/