我想在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功能
任何帮助都是适当的
答案 0 :(得分:2)
struct的大小是编译时常量。如果给出size to be determined later
数组,则表示错误。要么给出一些大小(对于ex 2,如果是二叉树)或使用pointer to node *
来存储数组或指针(子)或使用一些内置容器(对于ex std :: vector,std :: array)
答案 1 :(得分:0)
node[]* children;
不是合法的C ++语法。如果最大
在编译时已知孩子的数量,你可以写:
node* children[maxChildren];
否则:
std::vector<node*> children;
会做到这一点。如果maxChildren
很大或可变,那么你
无论如何可能想要使用这个表格。另一方面,如果
maxChildren
为2,您可能只想声明两个指针:
node* leftChild;
node* rightChild;