Wieder mal Functionpointer
-
Hallo Leuts,
ich habe folgendes Problem:
Ich möchte gerne innerhalb einer Memberfunktion einer Klasse einen Funktionszeiger auf eine andere Memberfunktion dieser Klasse erzeugen.Ich habe das in etwa so gemacht.
class A { public: A(); ~A(); void ErsteMethode(); void* ZweiteMethod(void*); }; void A::ErsteMethode() { // blabla ... void* (*pFunc)(void*) = &ZweiteMethode; // geht nicht void* (*pFunc)(void*) = &A::ZweiteMethode; // geht auch nicht void* (*pFunc)(void*) = (this->ZweiteMethode)(0); // geht auch nicht }jetzt bin ich mit meinem Latein am Ende. Vielleicht hat ja von euch noch jemand eine Idee.
Gruß Mea
-
In etwa so:
void A::ErsteMethode() { // Deklaration void* (A::*fp)(void*) = &A::ZweiteMethode; // Aufruf void* returnvalue = (*this.*fp)(NULL); }Ein Methodenpointer ist nicht an ein Objekt gebunden, sondern erst beim Aufruf der Methode bestimmst du von welchem Objekt die Methode aufgerufen werden soll (hier ist es einfach this).
http://www.newty.de/fpt/index.html
edit: HAHAHA erster

-
void *(A::*p)(void*)=A::ZweiteMethode;
-
class A { public: A(); ~A(); void ErsteMethode(); void* ZweiteMethode(void*); }; void* A::ZweiteMethode(void*) { return 0; } void A::ErsteMethode() { // blabla ... void* (A::*pFunc)(void*) = &A::ZweiteMethode; // geht }