cycovery
Erfahrenes Mitglied
hi!
Ich hab ne Klasse, deren Objekte in einer membervariable einen functionpointer speichern sollen, und es soll eine methode geben um den functionpointer ans objekt zu übergeben.
class MyClass {
public:
MyClass();
~MyClass();
double callFunction(int x, int y);
void setFunction(double (*newFunc)(int x, int y));
private:
double (*m_myFunctionPointer)(int x, int y);
}
MyClass::MyClass(){
double (MyClass::*m_myFunctionPointer)(int, int) = 0;
}
double MyClass::callFunction(int x, int y) {
if(*m_myFunctionPointer!=0){
return m_myFunctionPointer(x, y);
}
else{
return 0.0;
}
}
void MyClass::setFunction(double (*newFunc)(int, int)){
double (MyClass::*m_myFunctionPointer)(int,int) = &newFunc;
}
das problem ist die rote Zeile. ich kriege folgenden Compile error:
Error 1 error C2440: 'initializing' : cannot convert from 'double (__cdecl **__w64 )(int,int)' to 'double (__thiscall MyClass::* )(int,int)'
Kann mir jemand erklären, warum das nicht geht? und wie mans richtig (und schön) macht?
Danke!
Ich hab ne Klasse, deren Objekte in einer membervariable einen functionpointer speichern sollen, und es soll eine methode geben um den functionpointer ans objekt zu übergeben.
class MyClass {
public:
MyClass();
~MyClass();
double callFunction(int x, int y);
void setFunction(double (*newFunc)(int x, int y));
private:
double (*m_myFunctionPointer)(int x, int y);
}
MyClass::MyClass(){
double (MyClass::*m_myFunctionPointer)(int, int) = 0;
}
double MyClass::callFunction(int x, int y) {
if(*m_myFunctionPointer!=0){
return m_myFunctionPointer(x, y);
}
else{
return 0.0;
}
}
void MyClass::setFunction(double (*newFunc)(int, int)){
double (MyClass::*m_myFunctionPointer)(int,int) = &newFunc;
}
das problem ist die rote Zeile. ich kriege folgenden Compile error:
Error 1 error C2440: 'initializing' : cannot convert from 'double (__cdecl **__w64 )(int,int)' to 'double (__thiscall MyClass::* )(int,int)'
Kann mir jemand erklären, warum das nicht geht? und wie mans richtig (und schön) macht?
Danke!