【问题标题】:What is the prototype for Boost::signals2::signal::connectBoost::signals2::signal::connect 的原型是什么
【发布时间】:2011-04-03 14:19:08
【问题描述】:

我想封装一个 signals2::signal 对象并公开 connect 和 operator() 函数,但是它们的原型是什么样子的?

例子:

#include <boost/signals2/signal.hpp>

template<typename T> class A {
    public:
        typedef boost::signals2::signal<T> SIG_T;

        void connect( TYPE1 arg ){
            s.connect(arg);
        }

        void fire ( TYPE2 arg ){
            s(arg);
        }

    private:
        SIG_T s;
};

那么如何表达TYPE1和TYPE2的正确类型,我假设它类似于SIG_T::???

【问题讨论】:

    标签: c++ boost boost-signals boost-signals2


    【解决方案1】:

    connect 接受typename SIG_T::slot_type const &amp;

    operator() 采用typename SIG_T::argument_type(也定义为typename SIG_T::arg&lt;0&gt;::type)。

    或者,您可以使用模板来避免担心确切的定义并接受任何可转换为正确类型的内容:

    template <typename Slot> void connect(Slot const & slot) {s.connect(slot);}
    template <typename Arg> void fire(Arg const & arg) {s(arg);}
    

    【讨论】:

      【解决方案2】:

      signal 类概要是 here,包括 signal::connect 重载的签名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2012-05-15
        • 2011-12-15
        • 2011-07-06
        • 2011-05-11
        • 2010-12-21
        相关资源
        最近更新 更多