有没有办法避免使用 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();
}