[英]identifier “xxx” is undefined, class pointer and struct
我正在编写一个小型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
因为编译器不知道在A
使用B
时是什么。 B
被认为是不完整的类型在A
和你被允许有一个指针或引用B
在A
。 您可以将代码更改为:
struct B;
class A {
B * someObjects;
};
typedef A* APointer;
struct B{
APointer a;
int n;
};
您是否听说过“ 前向宣言”一词! 您的编译器还不了解B
因此,请先声明B
struct B; // forward declaration
class A {
B * someObjects;
};
//... rest of the code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.