当我进行以下操作时,我遇到了链接器(未解析的外部符号)错误:
- 我有一个名为“Object”的类 - 它在“object.h”中定义。
它有一个构造函数:explicit Object(double x, /* 其他 */);
在“object.cpp”文件中,我想给该构造函数提供一个具体实现:Object::object(double x) : _x(x) {}
这个很奏效... 但是如果我在“object.cpp”文件中添加关键字“inline”:
inline Object::Object(double x) : _x(x) {}
突然出现了一个链接器错误!“error LNK2019:未解析的外部符号”
为什么?-这是否意味着我不能在构造函数中使用内联?
编辑:实际上,我注意到对于所有方法都是如此。但是,如果我将所有方法移到object.h头文件中,它确实有效。您无法从定义对象的头文件之外的位置内联函数吗?
编辑2:好的,进行了一次大更新,我决定建立一个快速测试案例:
main.cpp:
#include "a.h"
int main ()
{
a t;
t.test(5);
return 0;
}
a.h
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;
}
这会导致以下错误:
移除 "inline" 关键字使程序正常工作。将 "a.h" 和 "a.cpp" 合并为一个文件也可以。main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall a::test(int)" (?test@a@@QAEXH@Z),该符号在函数 _main 中被引用
我真的想不出还有什么更多的信息要提供了 :/
inline
不是你所想的意思。你能说一下你想用它实现什么吗? - CB Bailey