前方宣言による C での相互依存クラスの作成
C では、それぞれに次のオブジェクトが含まれる 2 つのクラス間の関係を確立するにはどうすればよいですか?他のクラスタイプ?
ダイレクトオブジェクト埋め込み
残念ながら、各クラスのオブジェクトを他のクラス内に直接埋め込むことは実現できません。この循環参照により、無限のスペース要件が作成されます。
回避策: ポインターベースの関係
代わりに、ポインターを使用してこの関係を確立できます。循環依存関係を解消するために、前方宣言を使用します。
前方宣言
クラスヘッダー (bar.h や foo.h など) で、定義せずに他のクラスが存在する場合:
// bar.h class foo; // Declare that the class foo exists class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Declare that the class bar exists class foo { public: bar* getBar(); protected: bar* f; };
さて、各ヘッダー完全な定義がなくても他のクラスを認識します。
クラス実装
対応する .cpp ファイルに、完全な定義にアクセスするために他のヘッダーを含めます。
// foo.cpp #include "bar.h" // ... Implementations of foo methods
// bar.cpp #include "foo.h" // ... Implementations of bar methods
での使用法main()
最後に、main.cpp でクラスのインスタンスを作成できます。
#include "foo.h" #include "bar.h" int main() { foo myFoo; bar myBar; }
この戦略により、循環参照の問題
以上がC で前方宣言を使用して相互依存クラスを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。