繁体   English   中英

C ++中的未定义类错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM