声明一个尚未声明的类型的对象

时间:2014-04-01 16:20:11

标签: c++ struct

抱歉,我找不到更好的标题:)头文件中有两个struct。这些struct的成员类型为另一个struct。编译器抱怨我在声明B obj时未声明B。那我该怎么办?

structures.h

struct A
{
    B obj; // B is not declared yet
};

struct B
{
    A obj;
};

1 个答案:

答案 0 :(得分:0)

创建未声明类型的对象是不可能的。你可以拥有的最好的是指向该类型的指针。

使用的一个例子如下:

#include <iostream>

using namespace std;

struct A;

struct B{

    A* obj;

    B(){cout<<"B ctr"<<endl;}
};

struct A{

    B* obj;

    A(){cout<<"A ctr"<<endl;}
};


int main()
{
  B obj1;
  obj1.obj = new A();

  A obj2;
  obj2.obj = new B();

   return 0;
}