【发布时间】:2018-06-03 11:17:28
【问题描述】:
为什么不能在 .cpp 文件中内联函数或类成员函数定义?例如,在下面的测试示例中,如果我尝试在 cpp 文件中内联函数或类成员定义,链接器将返回一个 undefined reference 错误:
test.h
void print();
class A
{
public:
void print() const;
};
test.cpp
#include <test.h>
inline void print()
{
// implementation
}
inline void A::print() const
{
// implementation
}
main.cpp
#include <test.h>
int main(int argc, char** argv)
{
print(); // undefined reference to `print()'
A a;
a.print(); // undefined reference to `A::print() const'
return 0;
}
我已经阅读了一些answers here,但我仍然不确定它是如何工作的。
【问题讨论】:
-
可能是因为 可以跨 .cpp 文件内联函数。如果您从函数中删除
inline,它们将工作and possibly even be inlined。
标签: c++ linker inline inline-functions