我正在编写一个小型c ++程序,其中包含与以下内容类似的结构:

class A {
   B * someObjects;
};

typedef A* APointer;

struct B{
   APointer a;
   int n;
}


尝试编译它会产生“标识符未定义”错误,因为在类A内部未知结构B。否则,在类A之前声明结构B仍应给出类似的错误,因为这样B便不知道APointer或APointer不知道A 。是否有可能使A类和B类成为好朋友?
提前致谢!

最佳答案

您需要转发声明B,因为编译器不知道在B中使用A是什么。 BA中被视为incomplete type,并且您可以在B中具有指向或引用A的指针。您可以将代码更改为:

struct B;

class A {
   B * someObjects;
};

typedef A* APointer;

struct B{
   APointer a;
   int n;
};

09-27 18:55
查看更多