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== メソッドを定義できることはわかっていますが、変換関数が機能しないのはなぜですか?