Problemchen mit Funktionszeigern
-
Hi leutz!
Ich habe hier ein kleines problem mit den funktionszeigern, aus irgendeinem grund funktionieren die nicht richtig, wenn die funktionen methoden eines objektes sind, hier zwei beispiele:/* FUNKTIONEN ALS METHODEN EINES OBJEKTES=NIX GEHT #include <iostream> using namespace std; class OperatorObject{ public: int A,B; OperatorObject(){ A=10; B=15; } int add(int a, int b){ return a+b; } int mul(int a, int b){ return a*b; } void doOperation(int (*pOperation)(int i1, int i2) ){ cout<<pOperation(A,B)<<endl; } }; int main(){ OperatorObject o=OperatorObject(); o.doOperation(OperatorObject::add); return 0; } */ // ALLES GLOBAL=ALLES FUNKTIONIERT #include <iostream> using namespace std; int add(int a, int b){ return a+b; } int mul(int a, int b){ return a*b; } void doOperation(int (*pOperation)(int a, int b) , int i1, int i2){ cout<<pOperation(i1,i2)<<endl; } int main(){ doOperation(add,2,3); return 0; }wenn die funktionen methoden einer klasse sind, spuckt der compiler irgendwelche komische fehler raus, dass der typ der funktion irgendwie nich passen würde:
Konvertierung von
'int (__thiscall OperatorObject::*)(int,int)'
in
'int (__cdecl *)(int,int)'
nicht moeglichwenn ich anstatt des "::"-Zugriffoperators einfach einen punkt verwende, kommt dasselbe raus.
Wäre dankbar, wenn mir jemand sagen würde, wie ich diesen funktionszeiger richtig übergebe.
Mfg andrey
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39450.html
http://www.boost.org/doc/html/function.html
-
ich glaube bei boost gibst auch funktoren sie sowas ähnliches wie funktionszeiger ... nur nicht ganz sooo hässlich