Problem bei der übergabe eines Strings...
-
Ich habe diese KLasse hier->
#include <vector> typedef struct { char *line; int x,y; bool remove; }textobj; class Text { public: void Add(int x, int y, char *text); std::vector<textobj> Output; }; extern Text PrintOnScreen;Ich habe dann ein Objekt Objekt der Klasse Text Global erstellt und greife nun aus anderen Klassen auf diese Klasse zu, nur irgendwie kann ich keine Strings übergeben!
Wenn ich schreibePrintOnScreen.Add(10,300,"dumm");funzt das noch ... wenn ich aber schreibe
PrintOnScreen.Add(10,300,tempout); //tempout ist char[30]Funktioniert das nicht !
Wenn ich das allerdings aus der main funktion raus mache funktioniert das ...
Kann mir einer sagen warum ? Und wie ich das Problem beheben kann ???
-
Hallo,
Du kannst das Problem ganz einfach beheben, indem du string statt char* verwendest.
Du übergibst hier an deinen vector einen Pointer auf char, der später evtl. ungültig ist. D.h. du kopierst nur Pointer und keine strings. Im ersten Fall übergibst du ein Stringliteral, welches im Programmablauf gültig bleibt.
-
Hmm
Ach verdammt... das mit den Pointern war mir eigentlich klar nur jetzt ist mir aufgefallen warum er ungültig wird ... ich rufe das ganze ja aus einer Funktion auf ... MIST!
Und bei diesem "" übergibt er also automatisch den ganzen string ?
Baut der Compiler das da irgendwie um? Ist ja irgendwie unlogisch denn irgendwo müssen die daten ja auch bleiben...Edit: DANKE!

-
Nein der Compiler übergibt einen Zeiger auf einen konstanten String. Wenn im Quelltext "blabla" steht packt der Compiler das in ne Tabelle die während des Programmablaufs konstant bleibt, und gibt Dir einen Zeiger in diese Tabelle.