Betrachten Sie die folgende Klasse, die eine Konvertierungsfunktion für die std :: string-Typ enthält:Warum funktioniert eine Konvertierungsfunktion nicht mit std :: string?
class SomeType
{
public:
SomeType(char *value)
{
_str = value;
}
operator std::string()
{
return std::string(_str);
}
private:
char *_str;
};
Der folgende Ausschnitt schlägt mit dem Fehler zu kompilieren: kein Operator „==“ passt diese Operanden
int main(int argc, char* argv[])
{
SomeType a("test");
if (a == std::string("test")) // ERROR on this line
{
int debug = 1;
}
return 0;
}
Ich weiß, ich könnte eine Operator == Methode, die std :: String Operand akzeptiert, aber warum funktioniert die Konvertierung Funktion nicht?
Was ist der Fehler? –
@Aniket Der Fehler ist in der Frage. –
Wenn eine dieser Antworten hilfreich war, nehmen Sie bitte eine an. – Borgleader