Funktion eines Objekts in einer Liste aufrufen
-
Hallo,
ich bin der Neue!
Ich hab gerade mal folgende Frage: Ich will eine Liste anlegen, in welche ich Objekt{e|referenzen} eintragen kann. Nun möchte ich aber eine Funktion eines Objekts aufrufen - ich hab versucht, das ganze mal so kurz wie möglich zusammen zu basteln.
#include <iostream> #include <list> class CObject { private: int a; public: CObject(int b) { a=b; } void Output() { std::cout<<a<<std::endl; } }; int main(int argc, char *argv[]) { CObject myObject1(1); CObject myObject2(2); std::list<CObject> myList; myList.push_back(myObject1); myList.push_back(myObject2); for (std::list<CObject>::iterator myIterator=myList.begin(); myIterator!=myList.end(); ++myIterator) { // Ich bin ratlos, wie ich folgendes angehen soll: // Aufrufen einer Funktion der Klasse CObject // (folgendes funktioniert ja so nicht: *myIterator.Output(); } myObject1.Output(); myObject2.Output(); return EXIT_SUCCESS; }Erreiche ich damit vielleicht nicht einmal das Beabsichtigte (=Das Element in der Liste soll eine Referenz auf das Objekt werden.) - was ich zudem mal auch mit glaube.
Ich wäre euch für Hinweise wirklich dankbar!

Grüße,
Mao
-
Wenn du wirklich mit * und . arbeiten willst, mußt du sie klammern ('.' hat höhere Priorität)
(*myIterator).Output();- aber als Abkürzung dafür gab es schon zu C-Zeiten den -> OperatormyIterator->Output();.
-
Oh, da hätt ich selbst drauf kommen (müssen).

Danke dir!
-
da gibts noch die variant mit "for_each", welceh für jede Objekt eine aktion/methode ausführt!
#include <functional> std::or_each(myList.begin(),myList.end(),std::mem_fun_ref(&CObjekt::Output));
-
Danke auch für diese Möglichkeit!
