[英]Getting 'unresolved external symbol' by overwriting a virtual function
我編寫了一個簡單的界面:(ICopyOnOperator.h)
template<typename T>
class ICopyOnOperator {
public:
virtual const T& operator=(const T& other) = 0;
ICopyOnOperator() = default;
ICopyOnOperator(const ICopyOnOperator& other) {
this->operator=((const T&)other);
}
};
它應該在調用復制構造函數時自動調用operator=
函數。 在另一個類中,我從中得出:(Vao.h)
class Vao : public ICopyOnOperator<Vao> {
...
public:
virtual const Vao& operator=(const Vao& other) override {
return *this;
}
};
當我編譯代碼時,出現“無法解析的外部符號”錯誤。 您是否知道為什么(我知道錯誤消息的意思,但是為什么會發生?)還是如何以不同的方式實現我的目標?
[編輯]
說清楚。 鏈接器找不到ICopyOnOperator<class Vao>::operator=(class rhino::Vao const &)
方法。 完整的錯誤消息:
1> tester.obj:錯誤LNK2019:未解決的外部符號“ public:虛擬類rhino :: Vao const&__thiscall rhino :: ICopyOnOperator :: operator =(class rhino :: Vao const&)”(?? 4?$ ICopyOnOperator @在函數“公共:__thiscall rhino :: ICopyOnOperator :: ICopyOnOperator(class rhino :: ICopyOnOperator const&)”中引用的VVao @ rhino @@@ rhino @@ UAEABVVao @ 1 @ ABV21 @@ Z)(?? 0?$ ICopyOnOperator @ VVao @ rhino @@@ rhino @@ QAE @ ABV01 @@ Z)
這與您從構造函數中調用虛擬方法( operator=
)有關。 從構造函數調用虛擬方法將導致調用在該層次結構級別定義的方法,而不是在實例化的類中定義的方法。
請在此處查看已接受的答案: 在構造函數中調用虛函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.