как подключить функцию-член к сигналу повышения - PullRequest
0 голосов
/ 28 марта 2020

Есть ли способ избежать использования 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();

}
...