c++ - char[] 中的可变修改类型

标签 c++ compiler-errors arrays

我有这个结构。我想做的是有一个连续的 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/

相关文章:

c - 如何在 SDK 的交叉编译器中访问 -ldl

java - 列表、基本类型和性能

c++ - 错误无法在 Visual Studio Community 2013 中打开文件 'mfc80u.lib'

c++ - 无法将 'DATA_UNIT::getc1' 从类型 'char (DATA_UNIT::)()' 转换为类型 'char'

c - 重复的声明。错误: conflicting types for ‘functionname’

optimization - 人工智能编译器

php - 从php中的一维数组创建嵌套的父子数组

vb.net - 将整数拆分为数组VB

c++ - Xcode 与 Visual Studio - SDL C++

c++ - 如何修复 C++ 上的段错误