[英]Compiler cannot see base class
我有以下代碼:
#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':基類未定義
即使我已經確認它是在包含的頭文件中。 編譯器提供的包含文件列表包含此頭文件,因此我無法看到它為什么看不到基類的定義。
有人見過這個嗎?
你使用#include
錯誤的方式。
首先,即使您使用的是Windows,也不要使用反斜杠 ( \\
)。 始終使用正斜杠( /
)!
其次,不要指定絕對文件系統路徑 。
如果文件屬於與包含文件屬於同一個項目,請指定相對路徑(注意單詞“project”在C ++本身沒有嚴格的技術定義,所以當我說“project”時,我或多或少意味着“如果文件屬於“對於相同的程序或相同的更大的組件”。
例:
#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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.