Funktionszeiger übergeben
-
Hallo zusammen
Ich habe mal wieder ein Problem mit funktionszeigern.
Ich habe eine Klasse mit einem Funktionszeiger und einer Methode zum setzen des Zeigers
class CFilterMin { public: CFilterMin(TCHAR *tszName, LPUNKNOWN punk, HRESULT *phr) ~CFilterMin() set_CallbackFunction (void (*func) (int)); private: //function Pointer for Callback void (*GVistaCallback) (int); }; CFilterMin::set_CallbackFunction (void (*func) (int)) { GVistaCallback = func; return NOERROR; }soweit so gut.. nun will ich aus einer anderen Klasse mittels set_CallbackFunction den Zeiger setzen
CFilterMinInstance->set_CallbackFunction(&CVMR9Graph::doNothing);mein kompiler (der im Visual Studio 2005) meint nun:
cannot convert parameter 1 from 'void (__thiscall CVMR9Graph::* )(int)' to 'void (__cdecl *)(int)'
Weiss jemand was ich da falsch mache??

-
Wenn man Funktionsadresse an Zeiger übergibt, benutzt man nicht den &-Operator, der Name der Funktion reicht.
Zweitens sieht das aber bei dir nach einer Methode einer Klasse aus und nicht nach einer globalen Funktion. Dann klappt das eh nicht. Methoden sind an Instanzen der Klasse gebunden und können daher nicht als globale Funktionen betrachtet werden.