0

有没有办法避免使用 boost::bind 将成员函数附加到 boost::signal 插槽?

我可以让它工作的唯一方法是像这样使用绑定:

mysignal.connect(boost::bind(&myClass::listenerMember, this, _1, _2));

但我真的希望它看起来更像这样:

mysignal.connect(myClass::listenerMember);

这是一些示例代码,可以更好地显示它:

#include <iostream>
#include <cstdlib>
#include "boost/signals2.hpp"

class window
{
    public:
    boost::signals2::signal<void(int,int)>  sigLButtonDown;

    void simulateCallback(){ sigLButtonDown(1,3);}
};

class windowListener
{
    public:
    windowListener(window * pwindow) { pwindow->sigLButtonDown.connect(boost::bind(&windowListener::listenerMember, this, _1, _2));}


    void listenerMember(int x, int y) {    std::cout << "ping!" << std::endl;}

};

int main()
{
    window w;
    windowListener l(&w);

    std::cout << "Here goes!" << std::endl;    
    w.simulateCallback();

}
4

0 回答 0