我在前向声明方面遇到了一些问题,好吧,我对所有事情都感到困惑。 我有 3 个相互依赖的类。例如:
- A类依赖于B类和C类
- B 类依赖于 A 类
- C 类依赖于 A 类
- A类和C类只有静态方法和静态成员
我想知道如何以这种方式使用前向声明来避免循环依赖。
感谢您的帮助。
最佳答案
#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;
}
第一,当类相互依赖时,这是一个糟糕的设计。 2,这种依赖并不意味着你必须持有类的对象,相反,如果这种依赖很复杂,你需要使用指向对象的“指针”而不是持有对象。 “指向对象的指针”意味着编译器不需要该类的完整原型(prototype)。
关于C++ 前向声明混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554155/