cstring löst sich in Luft auf
-
Ich bin grade ratlos, ob der Fehler bei mir liegen kann, oder bei Qt?! Der Aufruf einer const Funktion "getANNet()" dürfte die Daten nicht ändern, zumal ich dort nirgends was an m_pTrainingDial oder dem cstring änder?!
Wie kann in der Zwischenzeit der Inhalt flöten gehen?!const char* sTransFnc = m_pTrainingDial->getTransfFunct(); std::cout<<"TEST1: "<<sTransFnc<<std::endl; ANN::BPNet *pNet = m_pViewer->getScene()->getANNet(); std::cout<<"TEST2: "<<sTransFnc<<std::endl; if(pNet == NULL) return; else { std::cout<<"TEST3: "<<sTransFnc<<std::endl; ANN::Functions::ResolveTransfFByName(sTransFnc);TEST1: log TEST2: ��� TEST3: ��� Assertion `pFunction != 0' failed. Abgebrochen
-
Der Fehler liegt bei dir!
Warum benutzt du char*? In Qt wird QString benutzt, vermutlich hast du einen temporären QString nach char* gewandelt.
Aber wer soll das bei ein paar Bröckchen Code schon genau sagen können ...
-
Dacht ich mir fast. QString::toStdString() ist wohl der Übeltäter. Wenn man da eine Referenz erhalten hätte, würde es wohl keine Probleme geben.
THX
-
dgrat__ schrieb:
Dacht ich mir fast. QString::toStdString() ist wohl der Übeltäter. Wenn man da eine Referenz erhalten hätte, würde es wohl keine Probleme geben.
THXNein! Ein std::string kann ohne den QString leben. Du hast aber ein char*. Wo kommt der her?
-
return QString::toStdString().data()
-
Standard C++ kennt keine Luft.
-
dgrat__ schrieb:
return QString::toStdString().data()
ouch...
Wie lange lebt der std::string, den der QString zurück gibt? Und Referenz geht gar nicht, auf was sollte die zeigen?
Warum willst du überhaupt aus einer Funktion einen char const* zurückgeben, obwohl du sonst alles mit QString machst? Konvertierung erst direkt bevor du den char const* brauchst.
-
Wie lange lebt der std::string, den der QString zurück gibt?
Ist halt nur ein temporäres objekt. Darum funktioniert mein code auch nicht wie (naiv) erwartet. Seis drum, Problem habe ich gelöst indem ich nen std::string return und erst später auf den cstring zugreife.