2

私のクラスでは、プロトタイプ (パブリック) を次のように記述します。

bool operator< (const MyClass& obj);

クラス外 (同じファイル内) のメソッドを次のように実装します。

bool MyClass::operator< (const MyClass& obj)
{
    cout << "operator< used" << endl;
    //do my work
}

問題は、明示的に呼び出した場合 ( のようにobj1->operator<(*obj2)) オーバーロード演算子が呼び出されますが、暗黙的に呼び出された場合 ( のように) 呼び出されないことobj1 < obj2です。

この記事のオーバーロードのチュートリアルに従っていますが、何が欠けているのか、何が間違っているのかわかりません。

4

2 に答える 2

6

obj1obj2はポインターなので、そうします*obj1 < *obj2

于 2013-10-26T19:28:34.793 に答える
1

obj1 と obj2 は MyClass へのポインターです。operator < を呼び出したい場合: *obj1 < *obj2

于 2013-10-26T19:32:27.030 に答える