C++转发声明混乱
C++ Forward Declaration confusion
我在前向声明方面遇到了一些问题,嗯,我对所有事情都感到困惑。我有三个互相依赖的班。例如:
- ClassA依赖于ClassB和ClassC
- ClassB依赖于ClassA
- ClassC依赖于ClassA
- ClassA和ClassC只有静态方法和静态成员
我想知道如何以这种方式使用前向声明来避免循环依赖关系。
谢谢你的帮助。
#include <iostream>
using namespace std;
class B;
class C;
class A{
public:
static B instanceOfB;
static C instanceOfC;
static void foo(){
cout << "A static foo called"<< endl;
}
};
class C{
static A instanceOfA;
};
A C::instanceOfA = A();
class B{
A instanceOfA;
};
B A::instanceOfB = B();
int main(){
cout << "main run"<<endl;
A::foo();
return 0;
}
首先,当类相互依赖时,这是一个糟糕的设计。第二,这种依赖并不意味着你必须持有类的对象,相反,如果这种依赖很复杂,你需要使用指向对象的"指针",而不是持有对象。"指向对象的指针"意味着编译器不需要该类的完整原型。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 伟大的 c++ 前向声明混乱
- 关于C 的声明和定义之间的差异的混乱
- 正向声明混乱
- C++转发声明混乱
- C++对象声明混乱
- 为什么声明出现在一个混乱的符号名中