- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
接近 this tutorial 的结尾对于 boost::signals 库,在“传递槽”标题下,一个名为“slot_type”的类型用于传递要连接到信号的所需槽函数。但是,在 next example ,它们显然使用一种名为“slot_function_type”的类型做同样的事情。
我一直无法弄清楚这两者之间的区别。
什么时候应该使用“slot_type”,什么时候应该使用“slot_function_type”?
最佳答案
slot_type
是boost::slot<slot_function_type>
.
对于信号 boost::signal<R(T1, T2, ... TN)>
, slot_function_type
是类型删除的函数对象类 boost::functionN<R, T1, T2, ... TN>
, 相当于 std::function<R(T1, T2, ... TN)>
,因此它可以包含任何支持信号调用签名的对象(例如函数指针、可调用对象、boost::bind
等)。
slot_type
包含并具有来自 slot_function_type
的隐式构造函数, 但它还包含通过 boost::trackable
进行自动连接管理的机制(请参阅教程中的 Automatic connection management (Intermediate))。
您想使用 slot_type
除非你有一些特定的理由使用 slot_function_type
,因为这将确保如果您需要使用自动连接管理,它将正常工作。 slot_type
有一个模板化的隐式构造函数,所以可以在任何地方使用 slot_function_type
可以传递给 boost::signal::connect()
.
关于c++ - 在 boost::signals 中, 'slot_type' 和 'slot_function_type' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964613/
我在构建以下函数时遇到构建错误: template class Event { public: typedef boost::signal signal_t; typedef
如果您使用不同的函数(待调用)连接到信号,如何检查该函数是否已连接?通常我会比较函数指针的地址,但我如何访问该指针? 例子: boost::signals2::signal sig; sig.conn
当我尝试将多个信号连接到单个 slot_type 时,我正在使用 boost::signals 并泄漏内存。我在各种论坛上看到过同样的泄漏报告,但找不到任何提到正确的方法或任何解决方法的信息。 我正在
接近 this tutorial 的结尾对于 boost::signals 库,在“传递槽”标题下,一个名为“slot_type”的类型用于传递要连接到信号的所需槽函数。但是,在 next examp
考虑这个例子: #include #include typedef boost::signals2::signal DoubleSignalType; typedef boost::signals
我是一名优秀的程序员,十分优秀!