2017-12-12 19 views
-1

単純な親/子ノードクラスとして作成しようとしていますが、不完全な型には許可されていませんエラーが発生しています。どうして?不完全な型が許可されていません

Node ParentNode; //Error on this line 

が、ノードはこの時点で完全なタイプではありません(この時点で、それを定義することである)、構造自体のインスタンスを含めることはできませんが、それは:あなたがしようとしている

class Node { 
public: 
    Node ParentNode; //Error on this line 
    string NodeName; 


    Node(Node *node) : ParentNode(*node) { 

    } 
}; 
+1

をしたいです。コンパイラは再帰的に各インスタンスのNodeの定義を挿入しようとします:) –

+0

これはポインタにすることができます。 –

+0

'Node ParentNode;' => 'Node * ParentNode;'? – Stargateur

答えて

0

実際のインスタンスではなく、自身のインスタンスへのポインタまたは参照を含むことができます。結局のところ、このような再帰的封じ込めが許されていたのであれば、それは終わるだろうか?

0

エラーは、クラスの定義中にクラスの定義が不完全であることを示しています。

オブジェクトには、それ自身の型のインスタンスを含めることはできません。無限に大きくなります。

それは、あなたは無限のコンパイルを持って許可された場合は、

Node* ParentNode; 

Node(Node *node) : ParentNode(node) 
関連する問題