在库中,我在标题中有以下内容:
// 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
时,我从 show()
中的 setShown
调用中得到此错误,并且隐藏()
:
undefined reference to `ExtraButtons::setShown(bool)'
我可以通过从 show()
和 hide()
中删除内联并在源文件中定义它们来解决这个问题,就像正常情况一样,或者通过制作 setShown
也是内联的。为什么会这样?这些是唯一的解决方案吗?
最佳答案
看起来您没有将二进制库链接到您的项目中,或者您对 setShown
的实际定义是 inline void ExtraButtons::setShown( bool shown)
(请注意,它在源文件中被意外标记为内联)。
关于c++ - 从内联函数调用非内联函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621512/