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();
}

Here there is a cross include of the .h files from the .cpp files. So they both depend on one another. Though using the forward declaration and pointers it seems like that would break the cycle. So my question is: Is this a circular dependency? Why?

4

2 回答 2

1

A依赖于B,反之亦然,根据定义,你有一个循环依赖。您可以让它与前向声明一起工作的事实并没有改变这一事实。

于 2012-06-20T19:10:14.067 回答
0

您已经使用前向声明破坏了循环包含链,但您仍然在 A 和 B 之间存在逻辑循环依赖关系。它们每个都需要另一个类提供的东西。

关于您上面的评论,您永远不应该为向您的团队提出问题而感到羞耻。如果发现你错了,那么你就学到了一些东西。

于 2012-06-20T19:14:32.493 回答