MyClass
のオブジェクトの連鎖比較を行うオプションを追加したいと思います。たとえば:すべてが等しい場合、それはtrue
を返すように連鎖等価演算子オーバーロード
MyClass one;
MyClass two;
MyClass three;
/*....*/
if (one == two == three){
/*....*/
}
、そうでなければfalse
を返します。 私は現在MyClass
の唯一の2つのインスタンスを比較するときに正常に動作します。この演算子オーバーロードがあります。
bool operator==(const MyClass &other);
私はone==two==three
ので、私はそのようなものであることを私のoperator==
を変更する必要がありますね((one==two)==three)
に等しいことを理解:
MyClass& operator==(const MyClass &other);
しかし、私は行(連鎖)の2つ以上のインスタンスを比較できるようにこれを完了する方法を理解することができませんでした。 純粋に理論的な問題として
通常のセマンティクスに従わず、 'if(one == two && two == three)'を使うのはなぜですか? – NathanOliver
お願いします** ** –
@ NathanOliver:実際には、「EqualExpr」オブジェクトはすべての等価を評価する必要がありますが、通常のセマンティクスは短絡する可能性があります。 – user2658323