为了账号安全,请及时绑定邮箱和手机立即绑定

如何将类成员函数作为回调传递?

如何将类成员函数作为回调传递?

C++
慕田峪4524236 2019-07-05 14:37:42
如何将类成员函数作为回调传递?我使用的API要求我将函数指针作为回调传递。我试图从我的类中使用这个API,但是我得到了编译错误。下面是我从构造器中所做的工作:m_cRedundencyManager->Init(this->RedundencyManagerCallBack);这不编译-我得到以下错误:错误8错误C 3867:“CLoggersInfra:RedundencyManagerCallBack”:函数调用缺少参数列表;使用‘&CLoggersInfra:RedundencyManagerCallBack’创建指向成员的指针我试着用这个建议&CLoggersInfra::RedundencyManagerCallBack-不适合我对此有何建议或解释?我使用VS 2008。谢谢!
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

这不起作用,因为成员函数指针不能像普通函数指针那样处理,因为它需要一个“this”对象参数。

相反,您可以传递一个静态成员函数,如下所示,这与这方面的正常非会员函数类似:

m_cRedundencyManager->Init(&CLoggersInfra::Callback, this);

该函数可以定义如下

static void Callback(int other_arg, void * this_pointer) {
    CLoggersInfra * self = static_cast<CLoggersInfra*>(this_pointer);
    self->RedundencyManagerCallBack(other_arg);}


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 818 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号