C++ 前向声明混淆

标签 c++

我在前向声明方面遇到了一些问题,好吧,我对所有事情都感到困惑。 我有 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/

相关文章:

C++从列表中间删除节点

c++ - 我可以使用 Poco 从内存缓冲区创建多文件 zip 存档吗?

C++如何拥有线程助手

c++ - 类和运算符

c++ - QNetworkAccessManager 的自定义 QSslSocket

c++ - 实现图形算法的正确*模式*?

c++ - 对一些数字已经排序的数组进行部分排序

c++ - C++中的点和线类?

c++ - 从十六进制字符串颜色到 RGB 颜色

c++ - 类与函数模板特化