2014-07-08 46 views
4

我目前具有與G ++警告一個問題,我無法擺脫掉...我的代碼工作完美,但這個警告保持坡平了:G ++警告,使用內聯虛函數,但沒有定義

ChildModel.h:136:24:警告:內聯函數虛擬INT ChildModel :: getLinkCost(常量鏈接&)const的使用,但從未定義

我目前發現this post SO上,用[默認啓用]同樣的問題,但答案是特定於圖書館(定義的東西),所以它不適合我...

我的代碼如下:

class Model { 
public: 
    virtual inline int getLinkCost(Link const& link) const; 
}; 

class ChildModel: public Model { 
public: 
    /** Warning on the line bellow: **/ 
    virtual inline int getLinkCost(Link const& link) const; 
}; 

通過ChildModel重新定義的唯一功能是Model::getLinkCost,並且Model::getLinkCost方法僅受Model的方法調用。所有的方法都在C++文件Model.cpp中定義。

+0

如果是「內聯」,那麼鏈接到定義的工作將如何進行? – chris

+0

'inline'在這裏沒有效果。關於警告:它告訴你這個函數是* not * defined。所以讓我們看看你的'Model.cpp'(以及如何編譯/鏈接你的代碼)。 –

+5

「所有的方法都在C++文件'Model.cpp'中定義。」 - 那麼它不應該內聯。內聯函數必須在每個使用它的源文件中定義;所以要麼刪除'inline'說明符,要麼在頭文件中定義它。 –

回答

相關問題