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.


Anmelden zum Antworten