好吧,我在执行以下操作时遇到了链接器(未解析的外部符号)错误:
-我有一个类“对象” - 它在“object.h”中定义。
它有一个构造函数,如:explicit Object(double x, /* lots more */);
在文件“object.cpp”中,我想给该构造函数一个主体:Object::object(double x) : _x(x) {}
这有效.. 但是,如果我在“object.cpp”文件中添加关键字“inline”:
inline Object::Object(double x) : _x(x) {}
突然出现链接器错误!“错误 LNK2019:未解析的外部符号”
为什么?- 这是否意味着我不能对构造函数使用内联?
编辑:实际上我注意到所有方法都是如此。但是,如果我将所有方法移到object.h标头文件中,它确实可以工作。您不能从定义对象的头文件外部内联函数吗?
EDIT2:好吧,一个大更新,我决定构建一个快速测试用例:
main.cpp:
#include "a.h"
int main ()
{
a t;
t.test(5);
return 0;
}
啊
class a {
public:
void test (int x);
};
a.cpp
#include <iostream>
#include "a.h"
inline void a::test(int x) {
std::cout << x << std::endl;
}
这给出了以下错误:
main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号“public:void __thiscall a::test(int)”(?test@a@@QAEXH@Z)
删除“inline”关键字使程序工作。将“ah”和“a.cpp”组合到1个文件中也是如此。
我真的想不出更多信息可以提供:/