2012-08-15 64 views
2

對於boost :: signals庫,在標題「傳遞時隙」下的this tutorial末尾,使用一種名爲'slot_type'的類型來傳遞所需的插槽函數以連接到信號。但是,在next example中,他們使用名爲'slot_function_type'的類型顯然是同樣的事情。在boost :: signals中,'slot_type'和'slot_function_type'有什麼區別?

我還沒有弄清楚這兩件事之間有什麼不同。

什麼時候應該使用'slot_type',什麼時候應該使用'slot_function_type'?

回答

3

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()

+0

這很有道理。 謝謝。 – karadoc 2012-08-17 03:05:41

相關問題