我想在C ++中实现面向对象的函数指针(与C#中的委托相当)。
我写了一个示例代码,它使用“MagicFunctionPainter”作为最终类的占位符:
class A
{
public:
MagicFunctionPointer p;
void fireEvent()
{
p();
}
};
class B
{
public:
void init(A* a)
{
a->p = &onEvent;
}
void onEvent()
{
// in a real-world app, it'd modify class variables, call other functions, ...
}
};
std :: function或Boost :: Signals2是否支持?还有其他图书馆支持这种情况吗?
提前谢谢!
答案 0 :(得分:2)
p
的类型应为:
std::function<void(void)> // a function taking no arguments, returning nothing
在B::init
中使用:
std::bind(&B::onEvent, this);
答案 1 :(得分:0)
你需要绑定它:
boost::bind(&ClassX::member_function, boost::ref(instance))