我对 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/

10-11 12:21