Ich bin heute in einem Programm auf eine interessante Situation gestoßen, wo ich versehentlich eine vorzeichenlose ganze Zahl einer std :: string zugewiesen hat. Der VisualStudio C++ - Compiler gab keine Warnungen oder Fehler darüber aus, aber ich bemerkte den Fehler, als ich das Projekt ausführte, und es gab mir überflüssige Zeichen für meine Zeichenfolge.Warum lässt C++ zu, dass eine Ganzzahl einer Zeichenfolge zugewiesen wird?
Dies ist eine Art, was der Code aussah:
std::string my_string("");
unsigned int my_number = 1234;
my_string = my_number;
auch folgende Code kompiliert fein:
std::string my_string("");
unsigned int my_number = 1234;
my_string.operator=(my_number);
Die folgenden Ergebnisse zu einem Fehler:
unsigned int my_number = 1234;
std::string my_string(my_number);
Was es geht voran? Wie kommt es, dass der Compiler den Build mit dem letzten Codeblock stoppt, aber die ersten 2 Codebausteine erstellen?
Was sind die Compilerfehler? Für mich kompiliert und funktioniert g ++ v4.4 korrekt – CsTamas
Es tut mir leid, ich habe einen Fehler mit dem 2. Codeblock gemacht - es kompiliert. Die letzte schlägt mit einem Fehler fehl, da es keinen std :: string -Konstruktor gibt, der einen unsigned int akzeptiert. – user55417