Methodenpointer



  • Hallo zusammen

    Folgendes: Brauche einen Pointer der auf eine Methode zeigt.

    int EineKlasse::EineFunktion(int val, int val2)
    {
    
    }
    
    void EineKlasse2::EineFunktion(/* hier möchte ich einen Pointer auf obige Methode als Argument übergeben */)
    {
    
    }
    

    Wie geht das? Danke für eure Hilfen!





  • Danke!



  • Noch was, der Funktionsprototyp im Tut. schaut so aus:

    void Caller(Test* obj, void (Test::*method)())
    

    Ein Zeiger auf eine Methode der Klasse Test also. Geht das auch generisch? Also so, dass ich eine Methode einer beliebigen Klasse übergeben kann? Wie?



  • Ich würde sowieso Signals benutzen, dann kannst du die Methoden beliebiger Klassen aufrufen. Wenn du willst, kannst du auch mehrere Slots connecten und mit einem Signal alle autom. aufrufen lassen. Und auch nach belieben wieder disconnecten. Einfach mal das Tutorial ausprobieren, dann versteht man es am besten.

    Schau mal hier: http://www.boost.org/doc/html/signals.html

    Falls du die Boost-Library noch nicht benutzt, gibt es mind. jetzt einen Grund dafür.



  • Artchi schrieb:

    Ich würde sowieso Signals benutzen, dann kannst du die Methoden beliebiger Klassen aufrufen. Wenn du willst, kannst du auch mehrere Slots connecten und mit einem Signal alle autom. aufrufen lassen. Und auch nach belieben wieder disconnecten. Einfach mal das Tutorial ausprobieren, dann versteht man es am besten.

    Schau mal hier: http://www.boost.org/doc/html/signals.html

    Falls du die Boost-Library noch nicht benutzt, gibt es mind. jetzt einen Grund dafür.

    Wäre nett wenn mir einer den Code posten könnte der ohne Boost auskommt! Und ein Beispiel mit Boost! Danke.

    Weiss nicht richtig ob ich nur deswegen Boost nehmen soll... würde fast lieber eine Version ohne Boost vorziehen.



  • rewe schrieb:

    Noch was, der Funktionsprototyp im Tut. schaut so aus:

    void Caller(Test* obj, void (Test::*method)())
    

    Ein Zeiger auf eine Methode der Klasse Test also. Geht das auch generisch? Also so, dass ich eine Methode einer beliebigen Klasse übergeben kann? Wie?

    Templates sollten hierbei helfen.


Log in to reply