-1

我想在 C++ 中实现一个简单的树结构,例如:

struct node{
    ....
    node* parent;
    node[]* children;
    ....
};

但是编译器报错(CLang++和G++都有)

error: expected unqualified-id before '[' token
node[]* child;
    ^

error: expected ',' or '...' before '*' token
node(node[]* c): : child = c; {}
           ^

像这样的东西

顺便说一句,我将 -std=c++11 标志用于某些 C++ 11 功能

任何帮助都会得到帮助

4

2 回答 2

2

结构的大小是编译时间常数。如果你给出一个数组size to be determined later,那就是一个错误。要么给出一些大小(例如二叉树的情况下为 2)或用于pointer to node *存储数组或指针(子)或使用一些内置容器(例如 std::vector、std::array)

于 2014-04-15T06:12:15.373 回答
0

node[]* children;不是合法的 C++ 语法。如果在编译时已知最大子节点数,则可以编写:

node* children[maxChildren];

除此以外:

std::vector<node*> children;

会成功的。如果maxChildren是大的或可变的,你可能还是想使用这种形式。另一方面,如果 maxChildren是 2,您可能只想声明两个指针:

node* leftChild;
node* rightChild;
于 2014-04-15T09:06:36.330 回答