0
//A.h  
class B;  
class A{  
  void Stuff();
  B* FOO():  
  B* _b;
}  
extern A* A_A();

//A.cpp  
#include "A.h"  
#include "B.h" 
B* A::FOO(){
  return(_b);
} 

//B.h
class B{
 void BOO();
}

//B.cpp
#include "A.h"
#include "B.h" 
void B::BOO(){
 A_A->Stuff();
}

ここには、.cppファイルからの.hファイルのクロスインクルードがあります。したがって、両方とも互いに依存しています。前方宣言とポインターを使用しますが、それはサイクルを壊すようです。だから私の質問は:これは循環依存ですか?なんで?

4

2 に答える 2

1

A依存する場合、Bおよびその逆の場合、定義上、循環依存があります。前方宣言で機能させることができるという事実は、その事実を変更しません。

于 2012-06-20T19:10:14.067 に答える
0

前方宣言を使用して循環インクルードチェーンを切断しましたが、AとBの間には論理的な循環依存関係があります。それぞれ、他のクラスによって提供されるものが必要です。

上記のコメントに関して、チームに質問をすることを恥じてはいけません。あなたが間違っていたことがわかったら、あなたは何かを学びました。

于 2012-06-20T19:14:32.493 に答える