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?


Anmelden zum Antworten