5

Parentと合成関係を持つクラス、たとえば を作成したとしChildます。親クラスは、子のリストを保持します。

すべての子が親への参照を保持するようにしたいので、すべての子がParentポインターを保持します。

これにより、循環包含が発生します。parent.h で参照しChildchild.hで参照Parentます。したがって、Parentを含めるChild必要があります。これには を含める必要がありますParent

これを回避する最善の方法は何ですか?

4

2 に答える 2

8

前方宣言を使用する必要があります。

//parent.h
class Child; //Forward declaration
class Parent
{
    vector<Child*> m_children;
};

//child.h
class Parent; //Forward declaration
class Child
{
    Parent* m_parent;
};
于 2010-11-15T12:37:28.590 に答える
3

クラス内にはポインタのみParentが格納されるため、ファイル内でChilda を実行する必要はありません。そこに inclding する代わりに、 inの前方宣言を使用します。child ie のソースファイルでは、メソッドを使用することができます。#include "parent.h"child.hclass Parent;child.hparent.hchild.cpp#include "parent.h"Parent

于 2010-11-15T12:36:26.223 に答える