gpt4 book ai didi

c++ - 在 boost::signals 中, 'slot_type' 和 'slot_function_type' 有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:52 48 4
gpt4 key购买 nike

接近 this tutorial 的结尾对于 boost::signals 库,在“传递槽”标题下,一个名为“slot_type”的类型用于传递要连接到信号的所需槽函数。但是,在 next example ,它们显然使用一种名为“slot_function_type”的类型做同样的事情。

我一直无法弄清楚这两者之间的区别。

什么时候应该使用“slot_type”,什么时候应该使用“slot_function_type”?

最佳答案

slot_typeboost::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/

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