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
中定義。
如果是「內聯」,那麼鏈接到定義的工作將如何進行? – chris
'inline'在這裏沒有效果。關於警告:它告訴你這個函數是* not * defined。所以讓我們看看你的'Model.cpp'(以及如何編譯/鏈接你的代碼)。 –
「所有的方法都在C++文件'Model.cpp'中定義。」 - 那麼它不應該內聯。內聯函數必須在每個使用它的源文件中定義;所以要麼刪除'inline'說明符,要麼在頭文件中定義它。 –