Adresse/Iterator



  • Hallo,

    ich habe einen Iterator it auf ein Foo in einer Liste:

    list<Foo>::iterator it = myList.begin();
    // Suche in myList, sprich ein paar Mal ++it
    

    So, jetzt zeigt ja it auf ein Foo Element in myList. Jetzt will ich mir einen Zeiger auf das Foo Objekt merken, auf das Iterator it zeigt. Wie geht das?
    Ich dachte zuerst an dereferenzieren (dann habe ich ja das Foo und dann Adressoperator:
    Foo* f = &*it;
    Aber & und * heben sich doch gegenseitig auf und dann kriege ich wieder Iterator?



  • Wozu? Der Iterator ist bereits ein Zeiger auf Dein Foo-Element. Ansonsten: Foo * foo_ptr = &(*it); , also so wie Du es dachtest. Und nein, da kommt nicht wieder ein Iterator bei heraus.


  • Mod

    Doch, das passt schon. Außerdem "sollte" der Iterator auch einen Umwandlungsoperator zu void* haben, den habe ich aber persönlich noch nie benutzt. Kannst du ja mal ausprobieren.


Log in to reply