通常情況下,你定義一個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_。 –