我对 C++ 比较陌生,并且在理解 struct 时遇到了问题。
我有一个声明如下的结构
struct MyNode {
int level;
int index;
MyNode children[4];
}
但是代码无法编译并报告错误 C2148:数组的总大小不得超过 0x7fffffff 字节。
但是下面的代码编译
struct MyNode {
int level;
int index;
MyNode* children;
}
我可以像第一个示例中那样对 MyNode 进行编码,还是我遗漏了什么。
谢谢!
最佳答案
这将无法编译,因为编译器需要知道每种类型的大小。
那么,什么是 sizeof(MyNode)
?这是 sizeof(int) * 2 + sizeof(MyNode)
:递归使大小无法计算。
您需要一个指针,如第二个示例所示。为什么这有效?因为 sizeof(MyNode*)
是已知的:它是目标平台上地址的大小。
关于c++ - C++结构体和数组的一些问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1584702/