operator als argument
-
ich schon wieder...
ich möchte einen operator als argument einer function übergeben und diesen dann in der funktion nutzen
beispiel
double rechnen ( operator operat, double a, double b ) { return (a operat b); } rechnen (*, 2, 4); // return : (2*4)=8 rechnen (+, 5, 6); // return : (5+6)=11 etc.könnt ihr mir helfen?
-
Nein das geht nicht.
-
glaub ich nicht
-
double rechnen(char operation, double a, double b) { switch(operation) { case '+': return a + b; case '*': return a * b; /* */ } /* */ } rechnen('+', 5.0, 6.0);
-
peter k schrieb:
glaub ich nicht
Tja wie soll man dir das denn jetzt glaubhaft machen?

-
ick weiss, aber dachte das wäre unsauber..
würde gern' mal 'n spezi dazu hören..
-
würde gern' mal 'n spezi dazu hören..
Ich _bin_ es.
-
@the ugly what the fuck deine Funktion gibt nix zurück, obwohl da als Rückgabetyp double steht^^
-
ganz so einfach wie in lisp geht's in c++ nicht!
#include <iostream> #include <functional> using namespace std; template<typename T> double rechnen(T operation, double a, double b) { return operation(a,b); } int main() { cout << rechnen(plus<double>(), 3, 5) << endl; cout << rechnen(minus<double>(), 3, 5) << endl; cout << rechnen(multiplies<double>(), 3, 5) << endl; cout << rechnen(divides<double>(), 3, 5) << endl; cin.get(); }
-
Pellaeon schrieb:
@the ugly what the fuck deine Funktion gibt nix zurück, obwohl da als Rückgabetyp double steht^^
das sehe ich anders

-
schorsch code schrieb:
ganz so einfach wie in lisp geht's in c++ nicht!
#include <iostream> #include <functional> using namespace std; template<typename T> double rechnen(T operation, double a, double b) { return operation(a,b); } int main() { cout << rechnen(plus<double>(), 3, 5) << endl; cout << rechnen(minus<double>(), 3, 5) << endl; cout << rechnen(multiplies<double>(), 3, 5) << endl; cout << rechnen(divides<double>(), 3, 5) << endl; cin.get(); }gut gemacht schosch

-
bah mist, das is meine Bindehautentzündung, vorrübergehende Blindheit bei mir^^

-
wenn man switch meiden will, und switch will man meistens meiden, dann meidet man switch, indem man funktionszeiger oder funktionsopjekte übergibt, wobei man funktionszeiger auch meiden könnte, weil man sie meistens meidet, wobei das gemiedene switch es sich erlaubt, anzudeuten, daß es sich um eine laufzeitgeschichte dreht, und die funktionsobjekte sollten von einer gemeinsamen basisklasse erben tun.
-
volkard schrieb:
wenn man switch meiden will, und switch will man meistens meiden, dann meidet man switch, indem man funktionszeiger oder funktionsopjekte übergibt, wobei man funktionszeiger auch meiden könnte, weil man sie meistens meidet, wobei das gemiedene switch es sich erlaubt, anzudeuten, daß es sich um eine laufzeitgeschichte dreht, und die funktionsobjekte sollten von einer gemeinsamen basisklasse erben tun.
Gut Deutsch

-
Mit Makros geht es.
#define MyOp(op, a, b)\ ((a) op (b))Sollte man aber mit großer Vorsicht genießen. Vielleicht erklärst du mal was du eigentlich bezwecks.