在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错:
class A
{
public:
B *b;
};
class B{
public:
A *a;
};
int main()
{
return 0;
}
报错为“error: ‘B’ does not name a type”,就是因为在A类中使用B *b之前没有声明或定义B类,如果在第一行加上一句前置声明“class B;”,就不会有这样的问题了。
本文解释了在C++中,为何在源文件中声明A类的B指针会报错,原因是没有先声明B类。解决方法是进行B类的前置声明。
在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错:
class A
{
public:
B *b;
};
class B{
public:
A *a;
};
int main()
{
return 0;
}
报错为“error: ‘B’ does not name a type”,就是因为在A类中使用B *b之前没有声明或定义B类,如果在第一行加上一句前置声明“class B;”,就不会有这样的问题了。
3073

被折叠的 条评论
为什么被折叠?
