,如何聲明這一點:如何聲明返回類型作爲模板類型名稱的內部類?
template<typename T>
(T::ABC)& get();
提示錯誤:
error: expected constructor, destructor, or type conversion before ‘&’ token
,如何聲明這一點:如何聲明返回類型作爲模板類型名稱的內部類?
template<typename T>
(T::ABC)& get();
提示錯誤:
error: expected constructor, destructor, or type conversion before ‘&’ token
正確的形式是不帶括號
typename T::ABC
因爲括號
(typename T::ABC)
形式爲鑄造運營商,不是一個類型!
而且,關鍵字typename
是必需的因爲T:ABC
是「依賴型」:如果不使用typename
,表達T:ABC
被解釋爲如果ABC是類T的成員,並且不嵌套型) 。
使用typename
關鍵字:
template<typename T>
typename T::ABC& get();
它必須是:
template<typename T>
typename T::ABC& get();
但I T裏德,這不工作:
template<typename T>
(typename T::ABC)& get();
是的,我也試過,意識到這一點。我不知道爲什麼它不支持括號! – James 2010-10-30 17:16:23