あなたfunction()
は本当の関数です、function Callback
代わりにあなたが欲しいです。
サンプルプログラムを参照してください:ideone
#include <functional>
class MClass
{
public:
std::function<void(void)> func_ptr;
void setFuncPtr(const std::function<void(void)>& ptr)
{
func_ptr = ptr;
}
void callFuncPtr()
{
func_ptr();
}
};
あなたはfunc_ptr
どんなcallabeオブジェクトに設定することができます
MClass m;
m.setFuncPtr(globalFunction); // set to standalone function
m.callFuncPtr();
// set lambda to it
m.setFuncPtr([](){ std::cout << " do something " << std::endl; });
m.callFuncPtr();
または他のオブジェクトにバインドします
struct Test
{
void print() { std::cout << "Test::print" << std::endl; }
};
Test t;
m.setFuncPtr(std::bind(&Test::print, t));
m.callFuncPtr();
std :: bindとプレースホルダーを使用して、パラメーターを関数に渡すこともできます。