Methodenpointer



  • Moin,

    ich habe eine Methode, die einen Methodenpointer erwartet. Die Methoden, die übergeben werden, haben ein int als Parameter, der aber in den Methoden ein Standardwert zugewiesen wird. Jetzt wollte ich die übergebene Methode mit dem Standardwert aufrufen.

    Folgendes Funktioniert leider nicht:

    void Meth(CLASS *c, void (*pf)(int))
    {
        (c->*pf)();
    }
    

    Wie mache ich das richtig?



  • Lupus schrieb:

    void Meth(CLASS *c, void (*pf)(int))
    {
        (c->*pf)();
    }
    

    Das ist kein Methodenpointer, sondern ein Funktionspointer. Außerdem gehört der Standardparameter in die Deklaration:

    void Meth(CLASS* c, void (CLASS::* pf)(int = 42))
    {
      (c->*pf)();
    }
    

    Mag unangenehm sein, aber so ist es nunmal.



  • thx

    Das ist ja blöde, dass man den Standardwert angeben muss. Besonders wenn man verschiedene Standardwerte hat.
    Werde es dann wohl anders machen.


Anmelden zum Antworten