[英]Undefined class error in c++
如果我在不同的标题中有两个类:
第一个标题:
include "second_header.h"
class A
{
int x;
};
第二个:
include "first_header.h"
class A;
class B
{
A a;
};
为什么编译器会给我一个未定义类的错误,我可以解释一下吗?
因为在second_header.h
中实际上没有定义类A
,只声明了 。 要使用类的非引用/非指针,需要完全定义。
当你不需要second_header.h
文件中first_header.h
,只需删除从包括first_header.h
文件。
您要让编译器递归包含标头。 您无需在第一个标头中包含第二个标头,请尝试删除该包含。
通常,应该始终在C ++头文件中使用include防护 。
如果您实际使用类A的对象,则不能使用A的前向声明 class A;
从第二个标题开始的行,或者
您可以在类B中使用指针:
class A; // forward declaration, no need to include A's header.
class B
{
A* a; // don't create an A object (compiler would need A's header) but an A pointer.
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.