在person.h中,在一个名为person的类的公共部分下,我有:
bool operator < (person& currentPerson);
在person.cpp中我有这个:
bool person::operator < (person& currentPerson)
{
return age < currentPerson.age;
}
当我编译它时,我得到一个链接器错误,但只有当我实际使用运算符时。 有人能告诉我我做错了吗?
以下是错误消息。
1>FunctionTemplates.obj : error LNK2019: unresolved external symbol "public: bool __thiscall person::operator<(class person const &)" (??Mperson@@QAE_NABV0@@Z) referenced in function "class person __cdecl max(class person &,class person &)" (?max@@YA?AVperson@@AAV1@0@Z)
1>c:\users\kenneth\documents\visual studio 2012\Projects\FunctionTemplates\Debug\FunctionTemplates.exe : fatal error LNK1120: 1 unresolved externals
答案 0 :(得分:1)
在代码中的某处,当使用函数max
时,您正在将一个人与一个临时人进行比较。要做到这一点,你需要采用const引用。
bool operator < (const person& currentPerson) const;
^^^^ ^^^^^^ //This wont hurt too
和
bool person::operator < (const person& currentPerson)
// ^^^^^
{
return age < currentPerson.age;
}