2011-06-01 78 views
1

Possible Duplicate:
Where and why do I have to put 「template」 and 「typename」 on dependent names?C++模板內

這裏模板是我的問題:


template<typename TypeName> class Bubu 
{ 
    ... 
    vector<TypeName>::iterator Foo() 
    { 
     ... 
    } 
    ... 
} 

這給:

錯誤C2146:語法錯誤:缺少 ';'符前「富」

如果我改變類型名稱爲實際的類型,如int或SomeClass的,它的工作原理:


vector<int>::iterator Foo(){} 

我想擁有的是一樣的東西:


Bubu<SomeClassType> bubuInstance; 
vector<SomeClassType>::iterator it = bubuInstance.Foo(); 

怎麼了?我如何解決它?


+0

什麼?這根本不是重複的。僅僅因爲它談論的是同一件事情,並不是天生就是重複。 OP甚至不知道'typename'是什麼,更不用說知道如何使用它了。 – 2011-06-01 09:15:02

回答

2

在google上搜索「依賴名稱」。

無論如何要解決它使用類型名稱:

template<typename TypeName> class Bubu 
{ 
    ... 
    typename vector<TypeName>::iterator Foo() 
    { 
     ... 
    } 
    ... 
} 
1

你需要前綴「類型名稱」,也完成過你的類分號「;」

template<typename TypeName> 
class Bubu 
{ 
    typename vector<typename TypeName>::iterator Foo() 
    { 
    } 
};