繁体   English   中英

这是循环依赖吗

[英]Is this a 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文件的交叉包含。 因此,他们彼此依赖。 尽管使用前向声明和指针似乎会中断循环。 所以我的问题是:这是循环依赖吗? 为什么?

A依赖于B ,反之亦然,根据定义,您具有循环依赖关系。 您可以使它与前向声明一起使用的事实并不会改变这一事实。

您已经用正向声明打破了循环包含链,但是在A和B之间仍然存在逻辑循环依赖关系。它们各自需要其他类提供的东西。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM