编译器看不到基类
Compiler cannot see base class
我有如下代码:
#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
。
相关文章:
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- Google Colab 看不到 .so 文件
- 派生类看不到基类成员
- handleMessage看不到我的类和函数
- 模板类看不到继承的模板成员
- 为什么派生类找不到基类的类型别名?
- unique_ptr看不到派生类的自定义构造函数
- 为什么编译器在某些情况下看不到模板类中的错误?
- 在类模板上覆盖方法,编译器看不到它,只能看到其他重载函数
- 链接器看不到在基类(纯虚拟)中定义的模板函数
- 派生类模板看不到基类的成员
- 为什么我的C++代码看不到这个 C# 类成员?
- 为什么 Visual Studio 2010 调试器看不到静态 const 类成员?
- 为什么抽象类的实现看不到重载纯虚函数
- VC++ 编译器看不到我的任何命名空间或类
- 编译器看不到基类
- c++模板继承看不到基类成员