重複の可能性:
メソッドを同じクラスのメソッドに渡す最良の方法
関数ポインターをパラメーターとして渡す際に問題が発生したことはありません。これは機能します:
void functionThatTakesFPTR(void(*function)(int), int someValue){
function(someValue);
}
void printValue(int value){
std::printf("%d",value);
}
int main(int argc, char** argv){
functionThatTakesFPTR(&printValue, 8);
return EXIT_SUCCESS;
}
ただし、オブジェクト関数を渡すことはできません
void MyClass::setter(float value){ }
void MyClass::testFunction(void(*setterPtr)(float)){ }
void MyClass::someFunc(){
testFunction(&(this->setter));
}
私には、これは関数ではなく this のアドレスを渡すように見え、少し混乱しています。そうすることは可能ですか?また、別のクラス (インスタンス MyClass2) のオブジェクトの関数ポインタを渡すことは可能ですか?
編集:私が得ているエラーは、「クラス 'MyClass'にはメンバー 'setter'がありません」です。