Methoden-Pointer als Rückgabewert einer Methode
-
Hallo,
Gibt es die Möglichkeit, in C++ einen Methoden-Pointer als Rückgabewert einer Methode zuzulassen?
Wenn ja, wie lautet die Syntax hierfür?
Ein Beispiel:class Foo { public: void TueDies(); void TueDas(); void TueJenes(); ???? GibMirMethodenPointer( int ); // Syntax?? }; void Foo::TueDies ( ) { }; void Foo::TueDas ( ) { }; void Foo::TueJenes ( ) { }; ???? Foo::GibMirMethodenPointer ( int n ) // Wie lautet hier die Syntax { void (Foo::*p)(); switch ( n ) { case 0: { p = &Foo::TueDies; break; } case 1: { p = &Foo::TueDas; break; } default: { p = &Foo::TueJenes; break; } } return p; };
-
Monastero schrieb:
Hallo,
Gibt es die Möglichkeit, in C++ einen Methoden-Pointer als Rückgabewert einer Methode zuzulassen?Ganz normal:
void (Foo::* GibMirMethodenPointer())();
-
class Foo { private: typedef void (Foo::*ptr)(); // ein typedef auf ptr public: void TueDies(); void TueDas(); void TueJenes(); ptr GibMirMethodenPointer( int ); // ganz einfach mit ptr angegeben }; void Foo::TueDies ( ) { }; void Foo::TueDas ( ) { }; void Foo::TueJenes ( ) { }; Foo::ptr Foo::GibMirMethodenPointer ( int n ) // beinahe gleich ;) { void (Foo::*p)(); switch ( n ) { case 0: { p = &Foo::TueDies; break; } case 1: { p = &Foo::TueDas; break; } default: { p = &Foo::TueJenes; break; } } return p; };
-
Bashar schrieb:
Monastero schrieb:
Hallo,
Gibt es die Möglichkeit, in C++ einen Methoden-Pointer als Rückgabewert einer Methode zuzulassen?Ganz normal:
void (Foo::* GibMirMethodenPointer())();
Und wie immer in einem solchen Zusammenhang gilt auch hier:
Ein Typedef macht diese Deklaration auch für Normalsterbliche lesbar:typedef void (Foo::*TuMethode)(); TuMethode gibMirMethodenPointer();
-
Ok. Zu spät
-
Ich stehe auf dem Standpunkt, dass sowas jeder, der sich mehr als oberflächlich mit C++ beschäftigt, lesen können sollte. [Ob man es ständig lesen will, ist eine andere Frage, typedefs sind schon ne tolle Sache.]
-
Bashar schrieb:
Ich stehe auf dem Standpunkt, dass sowas jeder, der sich mehr als oberflächlich mit C++ beschäftigt, lesen können sollte. [Ob man es ständig lesen will, ist eine andere Frage, typedefs sind schon ne tolle Sache.]
Diesen Standpunkt teile ich.
Das Problem ist nur, dass ein "können sollte" in der realen Welt nicht sonderlich viel hilft. Wie ich mir von aktiven Praktikern sagen lassen habe, kämft der "Normalsterbliche" bereits mit wesentlich einfacheren Dingen.
Aber selbst wenn alle das lesen könnten, im Namen der besseren Lesbarkeit würde ich trotzdem immer ein typedef verwenden.
-
Vielen Dank für die Lösung, klappt super.
Ich war wohl auf dem Schlauch gestanden.