2010-10-16 63 views
5
template <class T> 
struct ABC 
{ 
     typedef typename T* pT;  
}; 

int main(){} 

上面這段代碼提供了錯誤錯誤在簡單的模板代碼

expected nested-name-specifier before 'T'
expected ';' before '*' token

什麼是錯的代碼示例?

+2

這將是有用的:http://pages.cs.wisc.edu/~driscoll/typename.html – 2010-10-16 08:41:13

回答

9

關鍵字typename被禁止使用非限定名稱(不包括前::),即使它們是從屬的。

C++ 03 [第14.6/5]說

關鍵字類型名稱,應僅適用於合格的名稱,但這些名稱不必依賴。

pt依賴於T,但這並不重要(在這種情況下)。

刪除typename使您的代碼編譯。