通常你可以比较字符串..
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 { ... };
与数字的比较工作正常,我不需要实现 == 等.....