Adresse einer Funktion einer Funktion übergeben



  • Hallo.
    Ich brauche eine Funktion a die eine Adresse v. einer anderen Funktion entgegen nimmt.Funktion a soll dann mithilfe der übergebenen Adresse die jeweilige zu der Adrsse gehörende Funktion aufrufen.
    Wie macht man so etwas?



  • grundsätzlich so:

    void foo (void (*fun) ())
    {
       fun();
    }
    
    void bar ()
    {
       cout << "fubar\n";
    }
    
    int main ()
    {
       foo (bar);
    }
    

    mit memberfunktionen sieht das schon anders aus, die müssen nämlich an ein objekt gebunden sein.

    viele leute machen sich auch gerne typedefs für sowas

    typedef void (*fun_t) ();
    
    void foo (fun_t fun)
    {
      fun();
    }
    

    allerdings stellt sich die frage, ob du nicht lieber irgendwelche wrapper verwenden willst.



  • hi,

    das musst du mit generischen Funktionen machen

    int Berechne(int a, int b, int (*func) (int,int))
    {
      return func(a,b);
    }
    
    int Addition(int a, int b)
    {
      return a+b;
    }
    
    int main()
    {
      int c;
      c=Berechne(2,3,Addition);
    }
    

Anmelden zum Antworten