Funktion "im Parameter definieren"



  • Hallo,

    ich wollt mal fragen, ob man, wie in beispielsweise JQuery, eine Funktion im Aufruf definieren kann. Für die, die grad nicht wissen, was ich meine, und ich glaube mal, das sind die meisten von euch:

    typedef int (*addieren)(int, int);
    
    void myFunction(addieren addFunc, int zahl1, int zahl2) {
        addFunc(zahl1, zahl2);
    }
    
    void irgendneAndereFunktion() {
        myFunction(new int (*)(int a, int b) {
            return a + b;
        });
    }
    

    Die Funktion wird also im Aufruf von myFunction definiert.

    Thx im Voraus

    MFG DerCoder



  • DerCoder schrieb:

    myFunction(new int (*)(int a, int b) {
    return a + b;
    });

    Das macht syntaktisch keinen Sinn.

    Was du meinen könntest: Lambdas (C++11)- oder man kann auch eine Funktion in einer Funktion (oder einem local-scope generell) (vorwärts-)deklarieren und dann außerhalb definieren.



  • Ja, das sieht doch schonmal ganz gut aus.

    Kann man das auch mit einer CustomKlasse oder sonstwie lösen? 🙂



  • DerCoder schrieb:

    Kann man das auch mit einer CustomKlasse oder sonstwie lösen? 🙂

    Das vielleicht:

    int main()
    {
          struct My
          {
                static void Funktion(){}
          };
    
          My::Funktion();
    }
    

Anmelden zum Antworten