这是循环依赖

时间:2012-06-20 18:40:38

标签: c++ circular-dependency

//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文件的交叉包含。所以他们都互相依赖。虽然使用前向声明和指针似乎会破坏循环。所以我的问题是:这是循环依赖吗?为什么呢?

2 个答案:

答案 0 :(得分:1)

A依赖于B时,反之亦然,根据定义,您具有循环依赖性。您可以使用前向声明来处理它并不会改变这一事实。

答案 1 :(得分:0)

您已使用前向声明打破了循环 include 链,但A和B之间仍然存在逻辑循环依赖关系。它们都需要其他类提供的内容。

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