Funktion mit Rückgabetyp char* gibt nichts zurück
-
Hallo, und zwar habe ich eine Funktion geschrieben, mit der mit Hilfe von TinyXML bestimmte Inhalte einer XML Datei ausgelesen werden.
Das funktioniert soweit ganz gut. Die reine funktionsweise der Funktion stimmt auch. Jedoch wird am Ende nicht das Resultat sondern sozusagen garnichts zurückgegeben.
Meine Funktion:
char* getnode(char* key) { TiXmlDocument xmldoc; xmldoc.LoadFile("LIC_Base.xml"); TiXmlNode *node = xmldoc.RootElement(); node = node->FirstChildElement("DialogInformation"); TiXmlElement *elem = node->FirstChildElement(); char* res = ""; for(; elem; elem = elem->NextSiblingElement("add")) { if(strcmp(elem->Attribute("key"), key) == 0) { const char* result = elem->Attribute("value"); res = const_cast<char*>(result); } } // Bis hierhin klappt alles return res; // Hier passiert der Fehler }Ich hoffe mir kann jemand sagen wo mein Fehler liegt.
-
Der Speicher, auf den der
char*zeigt, ist wahrscheinlich nach Beenden ungültig, weil die lokalen Variablen zerstört werden. Abgesehen davon istconst_castmeistens eine ganz schlechte Idee.Kannst du nicht einen
std::stringzurückgeben?
-
Ich glaub es liegt daran, dass du in der Schleife eine Variable erstellst, die nach dem verlassen wieder gelöscht wird. Da du nur die Adresse an res übergibst, ist somit auch nichts mehr vorhanden nach verlassen der Schleife.
#Edit da war Nexus schneller

-
Ok dank euch.
Wer weis wo ich da mit den Gedanken wieder war. Mit std::string klappts.