Operator per Parameter übergeben



  • gibt es irgendeine möglichkeit einen operator (+,-,*,/) als parameter zu übergeben also quasi sowas in der art:

    double funktion(wert1,wert2,operator)
    {
    switch(operator)
    .
    .
    .
    }

    danke für die hilfe


  • Mod

    Nicht direkt. Aber du kannst eine Funktion (oder allgemeiner ein Funktional) an eine andere Funktion übergeben. Zufälligerweise gibt es auch schon passende Funktionen für die gängigen Operatoren:
    http://www.cplusplus.com/reference/std/functional/



  • Nahezu selbst gebaut sähe die "Taschenrechnerproblematik" so aus:

    #include <iostream>
    #include <map>
    using namespace std;
    
    double add(double a, double b) { return a + b; }
    double sub(double a, double b) { return a - b; }
    double mul(double a, double b) { return a * b; }
    double div(double a, double b) { return a / b; }
    
    int main()
        {
            map< char, double(*)(double, double) > ops;
            ops['+'] = add;
            ops['-'] = sub;
            ops['*'] = mul;
            ops['/'] = div;
    
            // Pretend some user-input
            char selectedOperation = '-';
            double inputA = 12.0;
            double inputB = 3.5;
    
            cout << inputA << ' ' << selectedOperation << ' ' << inputB
                 << " = " << ops[selectedOperation](inputA, inputB) << endl;
        }
    

    Mit Funktionsobjekten (Funktoren?) oder wie in diesem Beispiel mit Funktionszeigern gehts aber schon ans "Eingemachte".

    Siehe auch:

    ➡ http://www.cplusplus.com/reference/stl/map/
    ➡ http://www.newty.de/fpt/index.html (mein Dank an Drakon für diesen Link)

    Grüße ... Heiko



  • Nicht direkt. Aber du kannst eine Funktion (oder allgemeiner ein Funktional) an eine andere Funktion übergeben. Zufälligerweise gibt es auch schon passende Funktionen für die gängigen Operatoren:
    http://www.cplusplus.com/reference/std/functional/

    ... ok aber ich verstehe immer noch nich ganz wie ich das als parameter übergeben kann.

    wenn ich z.b. plus<int>() übergeben will muss ich das dann so machen

    int function (int wert1,int wert2, UnaryOperator op)
    oder
    int function (int wert1,int wert2, struct op)

    oder wie mach ich das dann??



  • Hi

    Ein c++ buch kaufen und lernen !!!

    Lowbyte


Anmelden zum Antworten