使用尚未声明的类型声明对象

Declaring an object with a type which is not declared yet

本文关键字:类型 声明 对象 未声明      更新时间:2023-10-16

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

结构.h

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

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

使用示例如下:

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