我的代码如下:
#include "c:\code\CodeHeaders\Baseclass.hpp" // include full path out of desperation
class ChildClass: public BaseClass
{
// awesome code which breaks the laws of physics
}
但是,我收到编译错误:
错误C2504:'BaseClass':基类未定义
即使我已经确认它位于包含的头文件中。编译器提供的包含文件列表包含此头文件,因此我无法看到它为什么看不到基类的定义。
之前有人见过这个吗?
答案 0 :(得分:2)
你以错误的方式使用#include
。
首先,即使您使用的是Windows,也不要使用反斜杠(\
)。始终使用正斜杠(/
)!
其次,不要指定绝对文件系统路径。
如果文件属于与包含文件属于同一个项目,请指定相对路径(注意单词" project"在C ++本身没有严格的技术定义,所以当我说"项目"我或多或少意味着"如果文件属于一起"对于相同的程序或相同的更大的组件)。
示例:
#include "BaseClass.hpp"
或者:
#include "../BaseClass.hpp"
或者:
#include "../CodeHeaders/BaseClass.hpp"
如果包含的文件属于您要使用的库,请指定绝对路径。在这种情况下,您将文件包含< >
:
示例:
#include <BaseClass.hpp>
或者:
#include <CodeHeaders/BaseClass.hpp>
请注意这与使用<vector>
或<iostream>
等标准标题类似。
在这种情况下的困难是告诉您的建筑环境编译器可以在哪里找到这样的库包含文件。如何完成这完全取决于您的编译器。例如,如果您使用的是MSVC,请使用/I
compiler option。
示例:
cl /Ic:\CodeHeaders ChildClass.cpp
正确使用库是学习如何掌握C ++的重要一步。
答案 1 :(得分:1)
<子>&#34;移动&#34;我的评论作为答案,因为它看起来有助于解决问题。
这很可能是由某些namespace
不匹配或类似情况引起的。您应该检查Baseclass.hpp
。