在图书馆中,我在标题中有以下内容:
// 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
收到此错误:setShown
show()
hide()
undefined reference to `ExtraButtons::setShown(bool)'
我可以通过从源文件中删除内联show()
并hide()
在源文件中定义它们来解决问题,就像正常一样,或者也可以通过setShown
内联来解决。为什么会这样?这些是唯一的解决方案吗?