は、私はこれらの2つのクラスを持っていると言いますb
クラスのメソッドとその逆?循環依存関係は、
循環依存関係は、
答えて
「フォワード宣言」と呼ばれるものを使用することができます。
関数の場合、これはvoid myFunction(int);
のようになります。変数の場合は、extern int myVariable;
のようになります。クラスの場合、class MyClass;
。これらのボディーステートメントは実際のコードを含む宣言の前に含めることができ、宣言された型を使用してコードを生成するのに十分な情報をコンパイラーに提供することができます。
円形インクルードの問題を回避するには、各ヘッダーファイルの先頭に「包含ガード」(#ifdef
)を入れて、2回インクルードできないようにします。
この答えは、事実の中核を議論するものではありません。これは、 'A'のヘッダーに' B'の言葉を制限して宣言可能なものを前進させるのですが、 'A'のソースファイルでは自由です'#include'は完全な定義を含みません。何もソースファイルを' #include'するつもりはないからです。あなたはそれに循環的な依存関係を持たないでしょう。これはヘッダーにのみ影響します。これは、型の使用を効果的に無効にするアプローチを利用する方法です。 –
"other"クラスは、 "first"クラスへの参照またはポインタしか持てません。ファイルBHで
#include "b.h"
struct a {
b m_b;
};
:ファイルああで
ファイルb.cppで
struct a;
struct b {
a* m_a;
};
void using_the_a_instance(b& theb);
:
#include "b.h"
#include "a.h"
void using_the_a_instance(b& theb)
{
theb.m_a = new a();
}
@Borealidの答えに拡張するには:
円形インクルードの問題を避けるには、「インクルードガード」を使用してください。
例:
#ifndef MYFILE_H /* If this is not defined yet, it must be the first time
we include this file */
#define MYFILE_H // Mark this file as already included
// This only works if the symbol we are defining is unique.
// code goes here
#endif
- 1. java.lang.IllegalStateException:循環依存関係はRelativeLayout
- 2. sqlalchemy.exc.CircularDependencyError:循環依存関係が
- 3. 宣言の循環依存関係
- 4. 複数の循環依存関係C++
- 5. 循環依存関係エラーninject
- 6. 循環依存関係と動的アセンブリローディング
- 7. 参照の循環依存関係
- 8. Gradleの循環依存関係
- 9. Python相互依存クラス(循環依存関係)
- 10. 依存関係を配線する際の循環依存関係
- 11. 依存関係ツリーの制御ロジック - 循環依存関係の検索
- 12. 依存関係注入による循環依存関係の解決
- 13. Android:循環依存関係はRelativeLayoutに存在しません
- 14. は、循環依存
- 15. 循環依存
- 16. 循環依存関係を持つ既存のJavaオブジェクトをシリアライズ
- 17. はPythonの循環依存関係を検出します
- 18. xcodeの循環依存関係エラーを解決するには
- 19. 循環依存関係エラー私の解決策では、基準
- 20. Django ForeignKeyの循環依存関係はありますか?
- 21. Javaで循環依存関係を取り除く方法は?
- 22. Autofac循環依存
- 23. C++循環依存
- 24. Rspecリクエスト仕様中のRails 4の循環依存関係エラー
- 25. 循環バインディングの依存関係を防ぐ方法
- 26. のMakefile:.oファイル上の循環依存関係の説明
- 27. 城ウィンザーを使用したwinformsアプリの循環依存関係
- 28. この循環依存関係を取り除く方法
- 29. コレクション内の循環依存関係を見つけるC#
- 30. Hibernate:OneToMany関係WITHOUTH循環依存性なし
のStackOverflowの幽霊が語る、 "* Uhhhhhhnnnn ... Neeeeed moooore cooooode ...... *" –
が、私はそこにすべてのクラスが表示されていないので、私はdownvotingよ。 –