ホームページ >バックエンド開発 >C++ >C で前方宣言を使用して相互依存クラスを作成するには?

C で前方宣言を使用して相互依存クラスを作成するには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-23 20:44:15970ブラウズ

How to Create Interdependent Classes in C   Using Forward Declarations?

前方宣言による 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。