|
Funktionen als Parameter übergeben in C / C++
Jeder kennt es, er schonmal an einem Projekt gearbeitet hat. Irgendwann steht man bei C / C++ vor dem Problem, wie teile ich der Funktion mit, dass
sie einmal die eine Routine aufrufen soll, und in einem anderen Fall die andere.
Sowas in dieser Art:
Beispiel:
int funktion calculate ( int para1, int para2, int fkt)
{
int ret=0;
switch (fkt)
{
case 1:
ret = para1 + para2;
break;
case -1:
ret = para1 * para2;
};
return ret;
}
int main(void)
{
cout<< calc( 3,4,1)<<endl;
cout<<calc (3,4, -1) <<endl;
}
Auch wenn einige Leute der Meinung sind, das das mit den Klassischen Sprachen nicht geht, hier das Gegenbeispiel:
#include <iostream>
using namespace std;
typedef int(*fktptr)(int,int);
int calc(int i, int j, fktptr f)
{
return f(i,j);
}
int add(int i1, int i2) { return i1+i2;}
int mul(int i1, int i2) { return i1*i2;}
int main()
{
int x=7;
int y=9;
cout<<calc(add,x,y)<<endl;
cout<<calc(mul,x,y)<<endl;
int i=7, j=0;
i= i/j;
return i;
}
Achso, ich habe es "nur" mit dem GCC 4.x getestet. Dort klappts :-)
Ich gebe zu, es ist kein schönes Beispiel, aber man kann die Problematik bzw die Lösung erkennen (hoffe ich) |
|