C ++循环依赖

时间:2018-05-05 09:28:56

标签: c++ inheritance circular-dependency

我有一个未解决的问题,我想问一下c ++中的循环依赖。 假设我有两个继承自另一个类的类。在所有这三个类定义中,我有一个成员函数,用于初始化另外两个对象,如下所示。

class A{
  public:
  ...
  A* test(){
     A* first=new B();       
     A* second= new C();
   }
 };

 class B:public A{
  public:
  ...
  A* test(){
     A* first=new A();       
     A* second= new C();
   }
 };

 class C:public A{
  public:
  ...
  A* test(){
     A* first=new A();       
     A* second= new B();
   }
 };

我得到的编译错误是:"错误C2027:使用未定义的类型' B'"和"错误C2027:使用未定义的类型' C'"。

1 个答案:

答案 0 :(得分:1)

android:layout_height="wrap_content"之前转发声明,如下所示:

class A

不要使用class B; class C; class A{ //... 方法的内联定义,从类中定义它们:

test()

main.cpp方法定义中的某处:

class A{
public:
    A* test();
};

class B:public A{
public:
    A* test();
};

class C:public A{
public:
    A* test(){
        A* first=new A();
        A* second= new B();

        return first; //Add return
    }
};

此外,您的方法应返回指针A* A::test() { A* first=new B(); A* second= new C(); return first; //Add return } A* B::test() { A* first=new A(); A* second= new C(); return first; //Add return }