关于函数指针续

来源:互联网 发布:手机调频收音机软件 编辑:程序博客网 时间:2024/05/22 13:35

前面有提到过关于函数指针调用C++非静态成员,解决了在类内调用函数指针的问题。

 

 

 

 

 

由于定义了类型type void (CCallFuctionList::*FUNCPTR)();  知道接收函数指针的参数是 FUNCPTR。

但要是要接收时其他类的成员函数,该解决呢?

 

 

 

 

这里就需要引入boost::bind和boost::function两个函数。

简单介绍

boost::bind作用在于创建函数对象。其参数分别为接收函数名,函数需要传入的参数值。

boost::function作用在于保存函数对象,然后调用函数和函数对象。

 

 

 

 

 

我们来对上面的例子进行修改:

 

---type void (CCallFuctionList::*FUNCPTR)();   

->typedef boost::function<void()> FUNCPTR;

 

修改代码如下:

 

 

 

 

 

 调用代码如下:

 

 

 

 

 

注意这里REGISTE_FUNC(type, func)中的func,可以接收其他类的函数成员。例如:

在XXClass里面某成员函数里面调用

REGISTE_FUNC(SCMD_REGISTER,   boost::bind( &XXClass::XXFunc, this));

 

原创粉丝点击