class A
{
class B;
B::data myData; //Error: incomplete type not allowed.
class B
{
public:
struct data
{
int number;
};
};
};
在上面的代码中,我如何在类A中声明类型数据的成员变量?
答案 0 :(得分:3)
我认为您需要做的就是将类定义放在变量声明的前面。编译器不知道class B
内部是什么,只有它存在,直到它遇到类的实际定义
答案 1 :(得分:3)
B
的声明中使用 A::myData
之前,
class A
{
class B
{
public:
struct data
{
int number;
};
};
B::data myData;
};
必须定义:
{{1}}
答案 2 :(得分:0)
使用范围说明符,并确保在文件中定义之前不使用该类型:
class A
{
class B
{
public:
struct data
{
int number;
};
};
B::data myData;
};
另外,请注意,除非您只使用指向该类的指针,否则前向声明不起作用。当您创建类的实例时,它需要立即为该类提供定义。