Rozważmy następującą klasę, która zawiera funkcję konwersji dla typu std :: string:Dlaczego funkcja konwersji nie działa ze std :: string?
class SomeType
{
public:
SomeType(char *value)
{
_str = value;
}
operator std::string()
{
return std::string(_str);
}
private:
char *_str;
};
Poniższy urywek zawiedzie skompilować z błędem: brak operatora „==” pasuje do tych argumentów
int main(int argc, char* argv[])
{
SomeType a("test");
if (a == std::string("test")) // ERROR on this line
{
int debug = 1;
}
return 0;
}
Zdaję sobie sprawę, że mogę zdefiniować operatora == metodę, która akceptuje operand std :: string, ale dlaczego funkcja konwersji nie działa?
jaki jest błąd? –
@Aniket Wystąpił błąd. –
Jeśli którakolwiek z tych odpowiedzi była pomocna, zaakceptuj ją. – Borgleader