gpt4 book ai didi

c++ - Boost::signals2::signal::connect 的原型(prototype)是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:53 27 4
gpt4 key购买 nike

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

例子:

#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::???

最佳答案

connect需要 typename SIG_T::slot_type const & .

operator()需要 typename SIG_T::argument_type (也定义为 typename SIG_T::arg<0>::type )。

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

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

关于c++ - Boost::signals2::signal::connect 的原型(prototype)是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5530106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com