Ich habe eine Klasse in C++, und ich würde gerne in der Lage sein, ein Objekt zu drucken, also habe ich einen char * -Cast-Operator erstellt. Die Sache ist, dass aus irgendeinem Grund die Ausgabe der Operatorfunktion zufällige Symbole anstelle meiner zurückgegebenen Zeichenfolge ist. hier ist der Code:Zufallsausgabe mit char * -Operator
operator const char*()const {
std::cout << (std::to_string(Nom) + '/' + std::to_string(Denom)).c_str() << std::endl;
return (std::to_string(Nom) + '/' + std::to_string(Denom)).c_str();
}
und die Hauptfunktion:
Rational r1(7, 15);
std::cout << r1<<std::endl;
return 0;
Die erste Zeile Ausgabe normaly ("7/15"), aber der Rückgabewert nur zufällige Buchstaben.
Irgendwelche Hinweise?
Was denken Sie, die c_str() tut? – UKMonkey
Sie rufen 'c_str()' für ein temporäres Objekt auf. Das Ergebnis ist ein fliegender Zeiger in dem Moment, in dem Ihr Operator zurückkehrt. – StoryTeller
Der Grund, dass 'std :: string' 'c_str()' und nicht 'operator char *()' hat, ist es offensichtlicher, dass Code wie dieser etwas ernsthaft falsch macht. –