【问题标题】:boost::signals2 slot as a non-static function member?boost::signals2 插槽作为非静态函数成员?
【发布时间】:2012-04-17 15:20:51
【问题描述】:

我最近一直在玩 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 做到这一点?

【问题讨论】:

    标签: c++ boost non-static boost-signals2


    【解决方案1】:

    只是:

    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;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多