Ich versuche, eine Klasse mit Konvertierungsoperatoren zu Zeichenfolge und char *, das macht mehrdeutige Aufruf Fehler beim Versuch, eine Zeichenfolge zu erstellen. annehmen ich habe die folgende Klasse:C++ Operator Zeichenfolge und char * verursacht mehrdeutigen Fehler
class A
{
public:
A(){};
operator const char*() const { return "a" };
operator const string() const { return "b" };
}
und die folgenden Hauptprogramme:
int main()
{
A a;
string b = string(a);
return 0;
}
dies verursacht mehrdeutig Aufruf Fehler basic_string (A &) auch versucht, die folgenden:
class A
{
public:
A(){};
operator const char*() const { return "a" };
explicit operator const string() const { return "b" };
}
int main()
{
A a;
string b = static_cast<string>(a);
return 0;
}
Dies verursacht den gleichen Fehler. Ich brauche beide Operatoren in meinem Code, wie kann ich machen dies funktioniert?
Anmerkung: string b mit = a funktioniert, aber ich brauche die Zeichenfolge (a) Format 2 aswell
Notiz zu arbeiten: nicht mit expliziten keywork Operator macht = mehrdeutig
@Sergey Ich kann dort eine lokale Variable nicht erkennen? –
[Verbunden] (https://stackoverflow.com/questions/3518145/c-overloading-conversion-operator-for-custom-type-to-stdstring). –
@ πάνταῥεῖ Ah, ja, es sollte in das Datensegment kompiliert werden. – Sergey