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

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

Linda Hamilton
リリース: 2024-11-23 20:44:15
オリジナル
969 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート