was mach ich falsch - Struktur & Zeigerverwendung!
-
Hi!
Ich habe einen Code mal ein wenig gekürzt um den Fehler zu zeigen.
Das ganze übergreift in der Endphase noch über 2 CPP Dateien aber um das Grundzeug mal zu zeigen:/* HEADER DATEI */ class TPlayer { public: //gekürzt }; struct TUserItem { TPlayer *Player; TUserItem *point2; }; /* CPP DATEI */ void CreatePlayer(TUserItem *list, TPlayer *pl, int Body, int Head) { // gekürzt if (list == NULL) { list = new TUserItem(); list->Player = pl; list->point2 = NULL; } if (list == NULL) ShowMessage("Meldung 1"); } void MeineHauptfunktion() { TPlayer *OwnPlayer = new TPlayer(); TUserItem *item = NULL; CreatePlayer(item, OwnPlayer, 0, 0); if (item == NULL) ShowMessage("Meldung 2"); }
Meldung 1 wird nicht angezeigt, jedoch Meldung 2. Warum?
Danke im voraus
Eich
-
weil du item nirgends aenderst. du aenderst nur eine lokale kopie. call by reference heisst die loesung.
-
hmm~ könntest du mir vielleicht ein kleines Beispiel geben?
ich habs mit
void CreatePlayer(TUserItem **list, TPlayer *pl, int Body, int Head)
und
void CreatePlayer(TUserItem &*list, TPlayer *pl, int Body, int Head)
probiert aba kriegs einfach nich hin <.<mal geht das nicht dann das nicht. Hab ma gegoogled gehabt..
-
TUserItem* &list?