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

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

我使用的API要求我将函数指针作为回调传递。我试图从我的类中使用这个API,但是我得到了编译错误。

下面是我从构造器中所做的工作:

m_cRedundencyManager->Init(this->RedundencyManagerCallBack);

这不编译-我得到以下错误:

错误8错误C 3867:“CLoggersInfra:RedundencyManagerCallBack”:函数调用缺少参数列表;使用‘&CLoggersInfra:RedundencyManagerCallBack’创建指向成员的指针

我试着用这个建议&CLoggersInfra::RedundencyManagerCallBack-不适合我

对此有何建议或解释?

我使用VS 2008。

谢谢!


慕田峪4524236
浏览 819回答 3
3回答

HUWWW

这不起作用,因为成员函数指针不能像普通函数指针那样处理,因为它需要一个“this”对象参数。相反,您可以传递一个静态成员函数,如下所示,这与这方面的正常非会员函数类似:m_cRedundencyManager->Init(&CLoggersInfra::Callback,&nbsp;this);该函数可以定义如下static&nbsp;void&nbsp;Callback(int&nbsp;other_arg,&nbsp;void&nbsp;*&nbsp;this_pointer)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;CLoggersInfra&nbsp;*&nbsp;self&nbsp;=&nbsp;static_cast<CLoggersInfra*>(this_pointer); &nbsp;&nbsp;&nbsp;&nbsp;self->RedundencyManagerCallBack(other_arg);}
打开App,查看更多内容
随时随地看视频慕课网APP