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

que*_*ner 0 c++ struct pointers typedef class

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

class A {
   B * someObjects;
};

typedef A* APointer;

struct B{
   APointer a;
   int n;
}
Run Code Online (Sandbox Code Playgroud)

尝试编译这会给出"标识符未定义"错误,因为结构B在类A中是未知的.否则在类A之前声明结构B应该仍然给出类似的错误,因为那时B不知道APointer,或者APointer不知道A有没有可能让A级和B级成为好朋友?提前致谢!

Nat*_*ica 7

您需要转发声明,B因为编译器不知道B它何时被使用A. B被认为是不完整的类型A,你都不允许有一个指针或引用BA.您可以将代码更改为:

struct B;

class A {
   B * someObjects;
};

typedef A* APointer;

struct B{
   APointer a;
   int n;
};
Run Code Online (Sandbox Code Playgroud)