g ++警告,使用但未定义的内联虚函数

时间:2014-07-08 15:20:43

标签: c++ 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::getLinkCostModel::getLinkCost方法仅通过Model方法调用。所有方法都在C ++文件Model.cpp中定义。

1 个答案:

答案 0 :(得分:15)

来自http://en.cppreference.com/w/cpp/language/inline

  

内联函数的定义必须存在于调用它的翻译单元中。

如果要在.cpp文件中定义函数,则必须从.h文件中删除inline说明符。