c++ bind this 实现成员函数代替静态函数

bind可以用成员函数来替代静态函数。

回调函数一般使用静态函数,其中需要传入具体对象的指针,然后该对象的成员变量或函数,都需要加上“对象指针->”这个前缀。

bind可以将成员函数用于回调函数。成员函数多了一个隐含的参数this,所以直接用作回调会报错,bind可以将this封装起来(可以理解为骗过编译器)

例如,在 类MainWindow 中有 void action() 成员函数,使用方法如下:

std::function<void()> callbackFunc = std::bind(&MainWindow::action, this);

callbackFunc就可以当作回调函数使用了。

 

参考 c++11:std::bind_std::bind this失效-CSDN博客

读书笔记:C++11新特性:std::bind与成员函数_std::bind绑定成员函数 reference to non-static member fun-CSDN博客

std::bind()和this相遇 - yyfaaa - 博客园 (cnblogs.com)

 

posted @ 2024-02-27 17:49  夕西行  阅读(71)  评论(0编辑  收藏  举报