考虑以下包含 std::string 类型的转换函数的类:
class SomeType
{
public:
SomeType(char *value)
{
_str = value;
}
operator std::string()
{
return std::string(_str);
}
private:
char *_str;
};
以下代码段无法编译并出现错误:没有运算符“==”匹配这些操作数
int main(int argc, char* argv[])
{
SomeType a("test");
if (a == std::string("test")) // ERROR on this line
{
int debug = 1;
}
return 0;
}
我意识到我可以定义一个接受 std::string 操作数的 operator== 方法,但为什么转换函数不起作用?