-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; {}
           ^

このようなもの

ところで、一部の C++ 11 機能に -std=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が大きいか可変である場合は、とにかくこのフォームを使用することをお勧めします。一方、 maxChildrenis が 2 の場合は、2 つのポインターを宣言するだけで済みます。

node* leftChild;
node* rightChild;
于 2014-04-15T09:06:36.330 に答える