我正在编写一个小型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
是什么。 B
在A
中被视为incomplete type,并且您可以在B
中具有指向或引用A
的指针。您可以将代码更改为:
struct B;
class A {
B * someObjects;
};
typedef A* APointer;
struct B{
APointer a;
int n;
};