【发布时间】:2013-05-03 09:59:47
【问题描述】:
很抱歉问这样一个问题,因为我确定它以前已经回答过了,但我正在努力寻找答案,这不是因为不想看……反正..
class foo
{
void read(void (*func)(obj&))
{
// many things happen to obj...
(*func)(obj); // Calls the function pointer to the handler.
}
};
class bar : public foo
{
void handler(obj&)
{
//
}
};
void main()
{
foo f;
typedef void (foo::*funcptr)(obj&);
funcptr ptr = &foo::handler;
f.read(ptr); ????
}
所以基本上,我要做的就是将名为 handler 的非静态成员方法作为函数指针传递给 read 方法,以便在执行回调时调用处理程序。
我已经尝试了各种方法来完成这项工作,并且不想制作静态方法(出于我不会讨论的原因)。我想我已经很接近了,但最后有点摔倒了!任何帮助将不胜感激。
【问题讨论】:
-
查看 FAQ lite,他们有一个很棒的部分专门讨论这个问题:parashift.com/c++-faq/pointers-to-members.html
标签: c++ methods static function-pointers