通常情况下,你定义一个boost::signals2::signal
像这样:根据boost :: function定义boost信号?
typedef boost::signals2::signal<void (int)> MySignalType;
MySignalType mySignal;
,然后你可以使用MySignalType::slot_function_type
以获取与信号兼容功能签名。
但是,我试图做相反的事情。
我有现有的代码,不使用升压信号。相反,代码绕过boost::function
传递,并将其返回给“发送”某个事件。我想根据创建一个boost::signals2::signal
现有的boost::function
。我尝试了最直观的组合:
typedef boost::function<void (int)> MyFunctionType;
typedef boost::signals2::signal<MyFunctionType> MySignalType;
但是,这被编译器拒绝。如果这是不可能的,我会感到惊讶,因为两者都是Boost软件包。我最好的猜测是boost::function
对象(或typedef)有其自己的内部typedef,与slot_function_type
相似,可用于需要纯函数签名的地方,但我在boost::function documentation中找不到类似内容。
我试过寻找类似的Q & A,以及浏览Boost文档,还没有发现有人在做同样的事情。
有没有方法根据现有的Boost函数定义Boost信号?
谢谢。
您的上一个代码块至少缺少'>'。 –
谢谢。固定。我重新输入了这个问题的代码,所以这不是原始问题的原因。 – Philip
不幸的是,我们无法知道您在其他地方没有犯过类似的错误。请张贴你的测试用例_verbatim_。 –