Vektor von Methodenzeigern
-
Hey!
Ich hätte gerne einen Vektor mit Methodenzeigern... Aber wie macht man das?
So gehts schonmal nicht:#include <iostream> #include <vector> using namespace std; class Test; typedef void (Test::*SectionFunction)(); class Test { std::vector<SectionFunction> functions; public: Test() { functions.push_back(&Test::Func1); functions.push_back(&Test::Func2); } void Func1() { cout << "Func 1" << endl; } void Func2() { cout << "Func 2" << endl; } void Call() { functions[0](); // term does not evaluate to a function taking 0 arguments } }; int main() { Test test; test.Call(); }
MfG
-
Wie oft kommt eigentlich die Frage noch?
Such mal nach "point to member function". Oder schau mal in den Thread nebenan:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-220641.htmlEine Memberfunktion hat noch einen versteckten Übergabe-Parameter, nämlich das Objekt selbst. Man kann also keine Memberfunktionen ohne Objekt aufrufen.
Edit: Gibt sogar einen FAQ-Beitrag:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39450.htmlGrüssli
-
Um es kurz zu machen du brauchst ein Objekt Test, wo du die Funktion aufrufen kannst:
z.B:
(this->*functions[0]) ();
-
THX
