从内联函数调用非内联函数

时间:2013-09-04 18:47:08

标签: c++ inline

在库中,我在标题中有以下内容:

// button.hpp

class ExtraButtons
{
public:
    static inline void show() { setShown(true); }
    static inline void hide() { setShown(false); }
    static void setShown(bool shown);
};

以及源文件中的以下内容:

#include "button.hpp"

void ExtraButtons::setShown(bool shown)
{
}

图书馆编译得很好。但是,当我使用该库并且我包含button.hpp时,我在setShownshow()中的hide()来电中收到此错误:

undefined reference to `ExtraButtons::setShown(bool)'

我可以通过从show()hide()移除内联并在源文件中定义它们来解决问题,就像正常一样,或者通过内联setShown来定义它们。为什么会这样?这些是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:1)

看起来您要么没有将库二进制文件链接到项目中,要么setShown实际定义是inline void ExtraButtons::setShown(bool shown)(请注意,它是在内嵌中意外标记的源文件)。