通常、文字列を比較できます。
if (var1 == "a string") ...
しかし、次のように、変換演算子を使用して独自のクラスを宣言すると、次のようになります。
class my_type {
operator std::string() const { ... };
....
}
今これ:
std::string var1("a string");
my_type x("a string");
if (x == "a string") ....
if (x == var1) ....
動作しません..つまり...
error: no match for ‘operator==’
もちろん、これは機能します:
if ((std::string) x == var1) ....
しかし、明示的にキャストせずにそれを実現したいと考えています。c++ が比較のために my_type を文字列に変換しないのはなぜですか。「==」演算子自体を実装せずにこれを強制するにはどうすればよいですか 他の比較演算子についても同様です。
ありがとうございました
PS>ところで、my_typeを数値に変換する演算子を実装すると(私のタイプでは問題ありません)...次のようになります:
operator double() const { ... };
数値との比較は問題なく動作します。== などを実装する必要はありません.....