c – 如何使用boost :: bind绑定类成员函数?

#include <QtCore/QCoreApplication>
#include <boost/bind.hpp>
#include <boost/function.hpp>

class button
{
 public:

    boost::function<void()> onClick;
    boost::function<void(int,double )> onClick2;
};

class player
{
 public:
    void play(int i,double o){}
    void stop(){}
};

button playButton,stopButton;
player thePlayer;

void connect()
{
    //error C2298: 'return' : illegal operation on pointer to member function expression 
    playButton.onClick2 = boost::bind(&player::play,&thePlayer);
    stopButton.onClick = boost::bind(&player::stop,&thePlayer);
}

int main(int argc,char *argv[])

{

    QCoreApplication a(argc,argv);
    connect();
    return a.exec();
}

解决方法

boost::bind(&player::play,&thePlayer)

您需要为两个参数使用占位符:

boost::bind(&player::play,&thePlayer,_1,_2)

占位符允许您说“我只绑定某些参数;其他参数将在稍后提供.”

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...