我目前遇到g++警告的问题我无法摆脱。我的代码工作正常,但这个警告不断弹出:
ChildModel.h:136:24:警告:内联函数virtual int ChildModel :: getLinkCost(const Link&)const使用但从未定义[默认启用]
我目前在S.O上找到了this post,遇到了同样的问题,但答案是特定于库(定义某些内容),所以它对我不起作用。
我的代码如下:
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 :(得分:15)
来自http://en.cppreference.com/w/cpp/language/inline
内联函数的定义必须存在于调用它的翻译单元中。
如果要在.cpp文件中定义函数,则必须从.h文件中删除inline
说明符。