2010-07-13 17 views
2

我使用boost::signal具有不同的功能簽名和不同的組合器。 在一個看起來像超出我希望得到某個信號聲明返回的類中。如何獲得boost :: signal的返回類型?

template<typename signal_type> class MyClass 
{ 

    signal_type mSignal; 

    signal_type::result_type getResult() { return mSignal(); } 

} 

但是signal_type::result_type不起作用。那麼有沒有辦法獲得返回類型?

+1

它總是一個好主意,發佈你有錯誤。 – 2010-07-13 15:47:58

+0

我不關注,signal_type :: result_type是返回類型,什麼不起作用? – Konrad 2010-07-13 15:50:18

+0

@Konrad:查看我接受的回答中評論的鏈接 – Cogwheel 2010-07-13 15:58:08

回答

2

您需要typename使用依賴類型:

typename signal_type::result_type getResult() { return mSignal(); } 

相關的名稱(即依賴於模板參數)被假定爲

  • 沒有名字類型除非typename和前綴
  • 不是名稱模板,除非立即以template作爲前綴。
+0

請參閱http://pages.cs.wisc.edu/~driscoll/typename.html以獲得更深入的瞭解。 – Cogwheel 2010-07-13 15:48:59

+0

謝謝,我正在尋找什麼。 – rallex 2010-07-13 15:57:51