c++ - 从内联函数调用非内联函数

标签 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 时,我从 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/

相关文章:

C++,从函数调用分配给类实例?

c++ - 为什么在有私有(private)变量的情况下需要使引用常量?

c++ - 在 Visual Studio 2013 中使用/fa 制作 list 文件?

html - 如何使用显示 : inline-block when resizing browser? 缩放图像

kotlin - 在 kotlin 中对小型私有(private)函数使用 inline 关键字?

c++ - 如何使用 placement new 确定对象是否已放置

c++ - 作为参数传递给函数模板时如何隐式转换类模板对象?

jquery - 为什么 Jquery 向我的 html 添加内联样式?

C++11 性能 : Lambda inlining vs Function template specialization

c++ - 将内联函数从 header 移动到源