Dereferenzierung Interator auf Zeiger!!!



  • Hallo,

    Habe wie jeder hier auch eine Frage, wäre super , wenn mir jemand weiter helfen könnte! 🙂

    Es existiert eine Klasse Item.

    Diese Objekte der Klasse Item befinden sich in einer Liste „inventar“ vom Typ <Item*> welche ein Element eines jeden Objektes der Klasse Player ist.

    Also jeder Player hat eine Inventarliste, die die einzelnen Items enthält.

    Das Problem ist, das diese Liste Zeiger auf Item-Objekte enthält und ich jetzt nicht weiss, wie ich in einer Methode der Klasse Player über einen Iterator auf die zu Item-Objekten definierten Methoden zugreifen kann

    #include „Player.h“

    void Player::showInventory()

    {

    list<Item*>::const_iterator Iter;
    for ( Iter = inventar.begin(); Iter != inventar.end(); Iter++ )

    {
    ****hier möchte ich nun auf die Methode „print“ des zum Item Zeigers gehörenden Objektes zugreifen.
    Normalerweise würde ich das so machen Iter->print()
    Das geht aber anscheinend nicht, da Iter nur ein Zeiger ist und so *Iter->… oder *(*Iter)->print() geht auch nicht?!

    }

    }

    Danke
    Sepp



  • entweder (*iter)->print() oder (**iter).print()



  • Hallo,

    VIELEN DANK 🙂 !!!!

    Warum reicht hier (*iter)->print() aber ein '*', somit müsset doch eigentlich nur auf den Zeiger der Liste dereferenziert werden und nicht direkt auf das Objekt, auf das der Zeiger zeigt?

    Macht das die Klammer?

    Danke



  • * : erste Dereferenzierung
    -> : zweite Dereferenzierung (ist NICHT dasselbe wie . sondern wie ein "*.")

    Gruß,

    Simon2.



  • Hallo Simon,

    ah stimmt -> ist ja auch ein Dereferenzierer ich Birne 🙂
    Vielen Dank, echt ein super Forum hier mit sehr hilfsbereiten Leuten 👍

    Grüße
    Jens


Anmelden zum Antworten