我得到這個界面我已經寫了:C++ - 虛擬析構函數和鏈接錯誤
#ifndef _I_LOG_H
#define _I_LOG_H
class ILog {
public:
ILog();
virtual ~ILog();
virtual void LogInfo(const char* msg, ...) = 0;
virtual void LogDebug(const char* msg, ...) = 0;
virtual void LogWarn(const char* msg, ...) = 0;
virtual void LogError(const char* msg, ...) = 0;
private:
Monkey* monkey;
};
#endif
的方法都是純虛函數,因此必須通過派生類實現。 如果我儘量讓繼承這個界面我得到以下鏈接錯誤類:
Undefined reference to ILog::ILog
Undefined reference to ILog::~ILog
我明白爲什麼有一個虛擬的析構函數(以確保派生的析構函數被調用),但我不明白爲什麼我得到這個鏈接器錯誤。
編輯:好的,所以我需要定義虛析構以及。 但是我仍然可以在虛擬析構函數的定義中執行東西,還是隻是簡單地調用我的派生類析構函數並跳過它? 一樣,將這個觸發:
virtual ~ILog() { delete monkey; }
當然,這將觸發。 – Truncheon 2011-12-22 21:59:04
可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external- symbol-error-and-how-do-i-fix) – 2015-08-12 06:42:05