繁体   English   中英

标识符“ xxx”未定义,类指针和结构

[英]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和你被允许有一个指针或引用BA 您可以将代码更改为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM