Funktionen über Iterator aufrufen?
-
Ich habe eine Klasse.Zeiger zu deren Instanzen sind in einem Vector gespeichert. Jetzt möchte ich auf deren Funktionen zugreifen. Geht das über einen Iterator?
-
class MyClass { public: void method() { }; }; int main() { std::vector<MyClass*> vec; MyClass obj; vec.push_back(&obj); std::vector<MyClass*>::iterator iter = vec.begin(); (*iter)->method(); // !!!! return 0; }Grüssli
-
Danke, genau das hab ich gesucht!
-
Hallo,
hier ein Minimalbeispiel.
Grüße
class K { public: void macheWas() const; }; void K::macheWas() const { cout << "mach mach\n"; } int main() { vector<K*> v; // Instanzen erzeugen und Adresse in Vector speichern for (int i=0; i<10; ++i) v.push_back(new K); // Per Iterator auf deren Funktion(en) zugreifen typedef vector<K*>::iterator iter; for (iter i = v.begin(); i != v.end(); ++i) (**i).macheWas(); // oder (*i)->macheWas(); // Speicher freigeben while (!v.empty()) { delete v.back(); v.pop_back(); } return EXIT_SUCCESS; }Edit: Haa, da war jemand schneller!

-
lucky_tux schrieb:
Edit: Haa, da war jemand schneller!

Och, nur 20 Minuten ...
...
Sag mir jetzt aber nicht, dass du an dem Beispiel 20 Minuten lang rumgewerkelt hast?
Grüssli
-
Sorry für OffTopic, aber da das Thema jetzt geklärt ist, kann ich ja hier weiterschreiben.

Wird in C++ noch häufig
return EXIT_SUCCESSverwendet? Ich schreibe beimain()grundsätzlich nie einreturn, und falls ich es tun würde, wäre mir eine0auch gut genug.
-
Nexus schrieb:
Wird in C++ noch häufig
return EXIT_SUCCESSverwendet? Ich schreibe beimain()grundsätzlich nie einreturn, und falls ich es tun würde, wäre mir eine0auch gut genug.nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch
-
Shade Of Mine schrieb:
nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch
Worauf hast du gerade geantwortet? Ich hab jedenfalls nicht nach dem Unterschied gefragt.
-
Nexus schrieb:
Sorry für OffTopic, aber da das Thema jetzt geklärt ist, kann ich ja hier weiterschreiben.

Wird in C++ noch häufig
return EXIT_SUCCESSverwendet? Ich schreibe beimain()grundsätzlich nie einreturn, und falls ich es tun würde, wäre mir eine0auch gut genug.Das ist wohl alles eine Frage des persönlichen Stils und davon, wie empfindlich der verwendete Compiler ist.
-
Nexus schrieb:
Wird in C++ noch häufig
return EXIT_SUCCESSverwendet? Ich schreibe beimain()grundsätzlich nie einreturn, und falls ich es tun würde, wäre mir eine0auch gut genug.Ich verwende
return 0, aber dazu hatten wir doch schon mal eine Diskussion?
EXIT_SUCCESSist doch eigentlich C, aber naja, man kann es noch durchgehen lassen
Nix hinschreiben tun doch nur Faule ... :p
Grüssli
-
Nexus schrieb:
Shade Of Mine schrieb:
nix, return 0 und return EXIT_SUCCESS sind vollkommen identisch
Worauf hast du gerade geantwortet? Ich hab jedenfalls nicht nach dem Unterschied gefragt.
Dachte du wolltest wissen ob es einen Unterschied gibt. Es gibt keinen, deshalb ist es komplett egal. Ich verwende return EXIT_SUCCESS eigentlich nie und nur dann return 0 wenn es auch ein return nicht 0 gibt.
alles persönlicher geschmack...
-
Dravere schrieb:
Ich verwende
return 0, aber dazu hatten wir doch schon mal eine Diskussion?Nicht ganz, da ging es darum, ob man die
return-Anweisung hinschreiben solle oder nicht. Hier geht es umEXIT_SUCCESSoder0.
Nicht sehr relevant, die Diskussion, aber ich wollte es mal wissen. Und da halt oft gepredigt wird, man solle nicht zu viel C in C++ programmieren, habe ich das auch für einen Kandidaten gehalten.

Shade Of Mine schrieb:
alles persönlicher geschmack...
Ja, grundsätzlich schon. Meine eigentliche Frage bezog sich aber darauf, ob das noch oft angewendet wird. Also nicht unbedingt Argumente dafür oder dagegen...

-
Dravere schrieb:
lucky_tux schrieb:
Edit: Haa, da war jemand schneller!

Och, nur 20 Minuten ...
...
Sag mir jetzt aber nicht, dass du an dem Beispiel 20 Minuten lang rumgewerkelt hast?
GrüssliNein, keine Sorge; es mag ja Menschen geben, die noch andere Dinge zwischendurch machen.
