Memberfunktion als Parameter für Memberfunktion anderer Klasse



  • Hallo, ich habe ein Problem dass man durchaus im Internet findet, mit den Lösungen konnte ich aber leider allesamt nix anfangen.

    Es geht darum, der Memberfunktion einer Klasse A aus einer beliebigen anderen Klasse B eine der dortigen Funtionen als Parameter zu geben, damit in A dann mit der Funktion aus B arbeitet, wobei die übergebenen Funtionen immer von der Art float funktion(float) sein sollen.

    float A::Bla( float (*pFunction)(float) )
    {
        return pFuntion(123);
    }
    

    In anderen Klassen soll jetzt sowas möglich sein:

    float B::Memberfunktion1(float parameter)
    {
      //...
    }
    
    void B::Memberfuntion2()
    {
      xyz = A::Bla(Memberfunktion1)
    }
    

    Außerdem soll jede beliebige andere Klasse C, die nix mit B zu tun haben muss, das gleiche wie B mit A machen können:

    float C::Memberfunktion223(float parameter)
    {
      //...
    }
    
    void C::Memberfuntion299()
    {
      xyz = A::Bla(Memberfunktion223)
    }
    

    Alles funktioniert problemlos, wenn ich keine Memberfunktion sondern eine normale Funktion übergebe. Hier bekomme ich aber nur Fehlermeldungen, was mache ich falsch?

    Vielen Dank für Hilfe.



  • psycho7765 schrieb:

    Was mache ich hierbei falsch?

    Gar nichts, Member-Funktionen können nicht als Funktionszeiger übergeben werden, wenn die Klasse, die die Member-Funktion beinhaltet, nicht bekannt ist. Eine Möglichkeit wäre noch die Member-Funktion als static zu deklarieren, aber dann könntest du nicht auf die Klassen-Member zugreifen.



  • Hier wird das ganze sehr ausführlich behandelt:
    http://www.newty.de/fpt/index.html



  • Ok. Schade dass es nicht so einfach geht.

    Aber danke für die Antworten.


Anmelden zum Antworten