Zitat
was bedeutet dann (*i)->funktionsname?
Falls Pointer auf Objekte gespeichert werden darauf zugreifen.
i->blabla() ist deshalb problematisch, weil Iteratoren abstrakte Pointer sind, und nur die Operatoren *, ==, =!, ++,--,+=,-=, +,-, <,>,<=,>= darauf definiert sind (machmal auch weniger, je nach Iterator Klasse)
Aber NICHT ->
Da Iteratoren aber meist intern als Pointer repäsentiert sind, kompiliert das Zeug, gibt aber meistens nicht das gewünschte Ergebnis.
Hängt stark von der konkreten STL Implementation an.
Btw: Willst Du wirklich bei jedem Aufruf die ganze Liste kopieren ?
Btw^2: Ein weiterer häufiger Pitfall der sehr ähnlich ist:
(*iterator).irgendwas() // ok
*iterator.irgendwas() // falsch -> compiler "denkt" irgendwas() gehört zur Iterator Klasse !
Btw^3: Funktioniert's jetzt mit (*i).GetID() ... ?
Mfg, LB