複数のヘッダーファイルがあるという問題があり、それぞれを相互にインクルードする必要があります。明らかに、これは実行できません。コンパイルすると、「インクルードが深くネストされすぎています」というエラーがスローされます。これは、基本的にコンパイラーに無限のインクルードループに入るように要求するためです。
voidポインターを使用して修正することはできますが、これは私には悪いコーディング慣行のようです。
理解を助けるために、私がやろうとしていることの例を次に示します。
ファイル-A:
#include "File-B"
#include "File-C"
class A
{
public: B* p_B;
public: C* p_C;
};
ファイル-B:
#include "File-A"
#include "File-C"
class B
{
public: A* p_A;
public: C* p_C;
};
ファイル-C:
#include "File-B"
class C
{
public: B* p_B;
};
これは、各クラス宣言が必要な場所を示しているだけです。確かに、より良い解決策がありvoid*
ます。
編集:私はすでにインクルードガードを使用しています。このコードは、私がやろうとしていることを確認するのに役立つだけです。