7

最近、学習目的で遊んでいて、クラス内にある非静的boost::signals2スロットに信号を接続できるかどうか疑問に思っていました(Qt のように)。次の点を考慮してください。

class Worker {
    typedef boost::signals2::signal<void (const std::string &)> SendMessage;
public:
    typedef SendMessage::slot_type SendMessageSlotType;
    boost::signals2::connection connect(const SendMessageSlotType &slot) {
        return send_message.connect(slot);
    }
private:
    SendMessage send_message;
};

class Controller {
public:
    Controller() {
        worker.connect(&Controller::print);
    }
private:
    static void print(const std::string &message) {
        std::cout << message << std::endl;
    }

    Worker worker;
};

Controller::printここで、非静的メンバーを作成したいと思います。boost::threadたとえば、これは ; を使用して実現できますboost::bind。これを行う方法はありますboost::signals2か?

4

1 に答える 1

15

ただ:

class Controller {
public:
    Controller() {
        worker.connect(boost::bind(&Controller::print, this, _1));
    }
private:
    void print(const std::string &message) {
        std::cout << message << std::endl;
    }

    Worker worker;
};
于 2012-04-03T23:14:48.253 に答える