ホームページ > バックエンド開発 > C++ > C で相互のインスタンスを共有するクラスを作成するにはどうすればよいですか?

C で相互のインスタンスを共有するクラスを作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-11 08:22:02
オリジナル
696 人が閲覧しました

How to Create Classes That Share Instances of Each Other in C  ?

C で互いのインスタンスを共有するクラスの作成

C で 2 つのクラスを作成しようとする場合、各クラスには次のオブジェクトが必要です。他のクラスをメンバーとして使用すると、コンパイル エラーが発生する可能性があります。これは、オブジェクトを直接含めるとメモリ割り当てで無限ループが発生するためです。

解決策: ポインタをクラス メンバーとして使用する

この問題を回避するには、直接オブジェクトではなくクラス メンバーとしてポインタを作成します。このアプローチには、完全な定義を提供せずにクラスの存在を通知する前方宣言が含まれます。

bar.h の場合:

#ifndef BAR_H
#define BAR_H

class foo; // Forward declare foo

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
#endif
ログイン後にコピー

foo.h の場合:

#ifndef FOO_H
#define FOO_H

class bar; // Forward declare bar

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};
#endif
ログイン後にコピー

それぞれの .cpp ファイルに、他のクラスのヘッダーを含めます:

// foo.cpp
#include "foo.h"
#include "bar.h"

// bar.cpp
#include "bar.h"
#include "foo.h"
ログイン後にコピー

このアプローチは失敗します循環参照ループにより、ポインタを介して相互のインスタンスを利用するクラスの作成が可能になります。

以上がC で相互のインスタンスを共有するクラスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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