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
-
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