0

person.h の person という名前のクラスの public セクションの下に、次のように記述します。

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
4

1 に答える 1

1

コードのどこかで function を使用maxすると、人を一時的な人と比較しています。それが機能するには、 const 参照を取得する必要があります。

bool operator < (const person& currentPerson)  const;
                 ^^^^                          ^^^^^^ //This wont hurt too

bool person::operator < (const person& currentPerson)
//                       ^^^^^
{
   return age < currentPerson.age;
}
于 2013-04-15T02:03:08.463 に答える