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级成为好朋友?提前致谢!
您需要转发声明,B因为编译器不知道B它何时被使用A. B被认为是不完整的类型中A,你都不允许有一个指针或引用B在A.您可以将代码更改为:
struct B;
class A {
B * someObjects;
};
typedef A* APointer;
struct B{
APointer a;
int n;
};
Run Code Online (Sandbox Code Playgroud)