次の大なり演算子をオーバーロードしました。
bool operator > (Person & a, Person & b)
{
//firstname is a string data type
return (a.FirstName > b.FirstName);
}
次のようなものがある場合、これは正常に機能します。
Person a = myPersonA;
Person b = myPersonB;
return myPersonA > myPersonB;
ただし、Person
クラス内でPerson getByID(int id)
、指定された ID によって Person のインスタンスを返す関数を定義しました。次のように、この関数から返された値で自分の演算子を使用しようとすると:
bool whosGreater = listPeople.getById(1) > listPeople.getById(2);
私は得る"Error: no match for operator >(Person&, Person&)"
しかし、次のようにするとうまくいきます:
Person a = listPeople.getById(1);
Person b = listPeople.getById(2);
bool whosGreater = a > b;
ここに表示されていないものはありますか? それはうまくいくはずだと私には思えます。
PS: これは宿題のためなので、変数を宣言して関数が返すものを代入することでうまくいくかもしれませんが、学習できるように何が起こっているのか知りたいです。グーグルで調べてみましたが、正しい質問が思いつきません。