Problem mit vector::const_iterator
-
Hi,
ich habe folgenden const_iterator
std::vector<CMyObj*>::const_iterator iter = myVec.begin();und würde diesen jetzt gerne nutzen, um ein bestimmtes Attribut der einzelnen CMyObj-Objekte des vectors zu lesen.
Ich dachte, mir würde*iteretwas vom Typ Zeiger auf CMyObj liefern und ich könnte damit schreiben:
*iter->GetSomething()Leider funktioniert das nicht wie gewünscht und ich wüsste jetzt gerne warum es so nicht geht und wie es korrekt heißen muss.
-
iter->GetSomething()foo->bar == (*foo).bar
-
Versuchs mal mit
(*iter)->GetSomething();
-

Cpt.Tanga schrieb:
iter->GetSomething()So funktioniert es genausowenig.
Cpt.Tanga schrieb:
foo->bar == (*foo).bar
Das ist logisch, aber was hat es mit meiner Frage zu tun?
viande schrieb:
Versuchs mal mit
(*iter)->GetSomething();Yep, so geht es! Danke!! Priorität der Operatoren?
-
Also erstmal musst du es so machen
(*iter)->GetSomething();Schau dir mal in einer Referenz , einem Buch oder einem Tutorial über C++ die Operatorenrangfolge an. Oder hier: http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Companion/cxx_crib/precedence.html
'->' geht nämlich vor '*'(Dereferenzierung)
EDIT: Zu spät...
-
@Tange: Muss man iteratoren dereferenzieren? Denk mal drüber nach ...
-
Hallo,
geht nicht ist etwa unpräzise...
Deine Methode ist evtl nicht const, was sie für einen const_iterator sein muss:
MyObj* GetSomething() const;Gruß,
Helfender