Membervariable verliert Wert?
-
Hallo,
ich habe ein Problem mit einer Membervariable, die die in einer Memberfunktion nicht den Wert hat, den sie vorher in einer anderen zugewiesen bekommen hat.
Die Funktion OnTimer wird mach m_timer.start() automatisch regelmäßig aufgerufen. Dort möchte ich die den in serverFrame::Start() zugewiesenen Wert der Variable startingtime benutzen.
Ich habe folgenden Code in server.h (Ausschnitt):
class serverFrame { public: serverFrame(); void OnTimer( wxTimerEvent& event ); private: bool Start(int interval_msec); char * TC_text; char * startingtime; };und in server.cpp:
bool serverFrame::Start(int interval_msec) { // Create Directory named after starting time startingtime = sync->getDaytimeText(); cout << "startingtime="<< startingtime << endl; // geht wunderbar strcpy(imagepath, "/mnt/daten/bilder/take-"); strcat(imagepath, startingtime); mkdir(imagepath, (__mode_t)1023); // Start Timer if (m_timer.Start(interval_msec)) cout << "timer started" << endl; else cout << "timer could not be started" << endl; return true; } void serverFrame::OnTimer( wxTimerEvent& event ) { cout << "startingtime="<< startingtime << endl; // leer grabber->grab(frame); strcpy(imagepath, "/mnt/daten/bilder/take-"); strcat(imagepath, startingtime); // geht nicht (leer) strcat(imagepath, "/"); strcpy(imagename, "Bild_"); strcat(imagename, sync->getTCText() ); saver->save(frame, imagepath , imagename, BMP, false); }Irgendwie sehe ich das Problem nicht.

-
Vielleicht solltest du für deine Membervariablen:
char * TC_text;
char * startingtime;
auch Speicher allokieren bevor du irgendwas dorthin kopierst.

-
startingtime ist nur ein Pointer auf ein char-Array, das von jemand anderem kontrolliert wird (vermutlich sync) - du solltest die Werte lieber in ein eigenes Array kopieren:
char* daytime=sync->getDaytimeText(); startingtime=new char[strlen(daytime+1); strcpy(startingtime,daytime);(und vergiss ein "delete[] startingtime;" im Destruktor nicht)
-
Danke!
