编译器看不到基类

Compiler cannot see base class

本文关键字:基类 看不到 编译器      更新时间:2023-10-16

我有如下代码:

#include "c:codeCodeHeadersBaseclass.hpp"  // include full path out of desperation
class ChildClass: public BaseClass
{
   // awesome code which breaks the laws of physics
}

然而,我得到了编译器错误:

错误C2504:"BaseClass":基类未定义

尽管我已经确认它在包含的头文件中。编译器提供的包含文件列表包含这个头文件,所以我不明白为什么它没有看到基类的定义。

有人见过这个吗?

您使用#include的方式错误。

首先,即使在Windows上,也不要使用反斜杠((。始终使用正斜杠(/(!

其次,不要指定绝对文件系统路径

如果文件与包含文件属于同一项目,请指定相对路径(请注意,"项目"一词在C++本身中没有严格的技术定义,所以当我说"项目"时,我或多或少是指"如果文件属于一起",表示同一程序或同一更大的组件(。

示例:

#include "BaseClass.hpp"

或者:

#include "../BaseClass.hpp"

或者:

#include "../CodeHeaders/BaseClass.hpp"

如果包含的文件属于要使用的,请指定绝对路径。在这种情况下,您将包含带有< >:的文件

示例:

#include <BaseClass.hpp>

或者:

#include <CodeHeaders/BaseClass.hpp>

请注意,这与使用<vector><iostream>等标准标头有何相似之处。

这种情况下的困难在于告诉您的构建环境编译器可以在哪里找到这样的库包含文件。如何做到这一点完全取决于您的编译器。例如,如果使用MSVC,请使用/I编译器选项。

示例:

cl /Ic:CodeHeaders ChildClass.cpp

正确使用库是学习如何掌握C++的重要一步。

"移动"我的评论作为答案,因为它看起来有助于解决问题

这很可能是由某些namespace不匹配或类似的原因引起的。您应该检查Baseclass.hpp