0

私のコードでは、同じタイプの c2678 の 37 個のエラーが発生しました。binary 'operator' : タイプ 'type' の左側のオペランドを取る演算子が定義されていません (または、受け入れ可能な変換がありません)

STLの「ユーティリティ」を含めて、==演算子をオーバーロードすることにより、エラーを取り除こうとしています。 http://msdn.microsoft.com/en-us/library/86s69hwc(v=vs.80).aspx http://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading

しかし、それでもこれは機能しません。どんな助けでも大歓迎です。

4

1 に答える 1

1

そのヘッダーはoperator==、いくつかの標準型のオーバーロードを提供しますが、独自の型に対して魔法のようにオーバーロードすることはありません。型を同等に比較可能にしたい場合は、演算子を自分でオーバーロードする必要があります。次に例を示します。

bool operator==(my_type const & a, my_type const & b) {
    return a.something == b.something
        && a.something_else == b.something_else;
}

// You'll probably want this as well
bool operator!=(my_type const & a, my_type const & b) {
    return !(a == b);
}
于 2012-07-27T12:52:16.527 に答える