Zeiger auf Member-Funktionen



  • Hallo Leute,

    Deklarieren kann ich einen Zeiger auf eine Member-Funktion meiner Klasse ohne Probleme, doch wie lautet die Syntax, um die Funktion dann später aufzurufen?

    Vielen Dank!

    class DIAGRAMM
    {
    	//...
    	void CreateViereck(PARAM*);
    };
    
    void DIAGRAMM::CreateRegion(/*...*/)
    {
    	//...
    	void (DIAGRAMM::* fnCreateRegion)(PARAM*) = CreateViereck;
    	//...
    	PARAM param;
    	fnCreateRegion(&param); //Kompilier-Fehler!
    	                        //error C2064: term does not evaluate to a function
    }
    


  • Für Memberfunktionszeiger brauchst du immer eine Instanz:

    (this->*fnCreateRegion)(&param);



  • Danke, das ->* war mir entfallen!



  • Im "Thinking in C++ Vol 1." von Bruce Eckel S.500ff steht noch irgendwas, das beim Zuweisen einer Adresse und beim Aufrufen immer eine volle Spezifikation notwendig waere ... und ausserdem der Adressoperator obligatorisch, also

    void (DIAGRAMM::* fnCreateRegion)(PARAM*) = &DIAGRAMM::CreateViereck;
    

    und was mich interessieren wuerde, wozu braucht man sowas eigendlich... machen Funktionsobjekte nicht etwas aehnliches ?


Anmelden zum Antworten