C++编译报错:does not name a type
在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错: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类,如果在第一行加上一句前置声明(forward de
文章共240字 · 阅读需要大约1分钟
一键AI生成摘要,助你高效阅读
问答
·
遇到了一个相似问题,看了百度知道的一个回答(链接找不到了)
在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错:
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类,如果在第一行加上一句前置声明(forward declaration)“class B;”,就不会有这样的问题了。
更多推荐
已为社区贡献4条内容
所有评论(0)