Ich versuche, eine Zeichenfolge aus einer Funktion wie diese zurück erhalten:einen String zurück, aber Müll
virtual const char* what() const throw()
{
std::string str = "Name Error: name ";
str+= n_name;
str += " is not defined";
char ret[256]="";
const char* temp = str.c_str();
strcpy(ret, temp);
return ret;
}
Aber wenn ich versuche, es an einem anderen Ort zu drucken:
const char* str= exc.what();
std::cout << str;
Der Ausgang ist Müll.
Ich dachte, das Problem war das Zeichen [] und es * char sein sollte, aber wenn ich es
char* ret="";
mir verändern
das Programm abgestürzt bei
strcpy(ret, temp);
Kann jemand bitte helfen? P.S. die Funktion hat einen const char *
Sie geben einen Zeiger auf ungültigen Speicher zurück.Sie müssen etwas Speicher zuweisen, auf den der Zeiger zeigt. Siehe 'malloc' oder 'neu []'. – ZunTzu