请考虑下面这个类,它包含了一个用于 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==方法,但是为什么转换函数不起作用呢?