C ++ Forward Declaration混乱

时间:2015-02-17 03:29:49

标签: c++

我在前进声明方面遇到了一些问题,好吧,我对一切感到困惑。 我有3个相互依赖的课程。例如:

  • ClassA依赖于ClassB和ClassC
  • ClassB依赖于ClassA
  • ClassC依赖于ClassA
  • ClassA和ClassC只有静态方法和静态成员

我想知道如何以这种方式使用前向声明来避免循环依赖。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

#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;
}

1,当课程相互依赖时,这是一个糟糕的设计。 2,这种依赖应该并不意味着你必须保持类的对象,相反,如果这种依赖是复杂的,你需要使用&#34;指针&#34;到对象而不是持有对象。 &#34;指向对象的指针&#34;意味着编译器不需要该类的完整原型。