我在中定义了以下函数chess_location.h
:
inline chess_location operator+(chess_location lhs, const chess_coord& rhs);
然后,在chess_location.cpp
:
#include "chess_location.h"
chess_location operator+(chess_location lhs, const chess_coord& rhs) {
//function definition
}
然后在我main()
的 in 中使用这个运算符main.cpp
,如下所示:
#include "chess_location.h"
int main() {
chess_location_B = chess_location_A + chess_coord;
}
但是,我收到一个链接器错误,提示找不到操作员:
error LNK2019: unresolved external symbol "class chess_location __cdecl operator+(class chess_location,class chess_coord const &)" (??H@YA?AVchess_location@@V0@ABVchess_coord@@@Z) referenced in function _main
在我看来,链接器没有将运算符的声明连接到定义,但我不确定为什么。我怀疑我const
的 s 可能有问题。但是,如果我将运算符定义移至main.cpp
,则一切都可以编译并正常工作。
知道这个错误来自哪里吗?