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 moeglich

    wenn 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





  • ich glaube bei boost gibst auch funktoren sie sowas ähnliches wie funktionszeiger ... nur nicht ganz sooo hässlich


Anmelden zum Antworten