通常,您定义boost::signals2::signal
如下:
typedef boost::signals2::signal<void (int)> MySignalType;
MySignalType mySignal;
然后您可以使用MySignalType::slot_function_type
来获取与该信号兼容的函数签名。
然而,我正试图做相反的事情。
我有不使用 Boost 信号的现有代码。取而代之的是,代码绕过 aboost::function
并将其调用回“信号”某个事件。我想boost::signals2::signal
根据现有的boost::function
. 我尝试了最直观的组合:
typedef boost::function<void (int)> MyFunctionType;
typedef boost::signals2::signal<MyFunctionType> MySignalType;
但这被编译器拒绝了。如果这不可能,我会感到惊讶,因为两者都是 Boost 包。我最好的猜测是一个boost::function
对象(或 typedef)有自己的内部 typedef,其目的类似于在需要纯函数签名的情况下可用,但我在boost::function 文档slot_function_type
中没有找到类似的东西。
我尝试搜索类似的问答,以及浏览 Boost 文档,但没有发现有人在做同样的事情。
有没有办法根据现有的 Boost 函数来定义 Boost 信号?
谢谢。