任何人都可以解釋爲什麼我不能夠使用C++模板是這樣的:編譯錯誤使用C++模板
template <typename T> class A {
public:
typedef std::vector<T>::iterator myiterator;
A(T value)
: v(10, value)
{
}
myiterator begin()
{
return v.begin();
}
myiterator end()
{
return v.end();
}
public:
std::vector<T> v;
};
int main()
{
A<int> a(10);
for (auto i = a.begin(); i != a.end(); ++i)
std::cout << *i << std::endl;
return 0;
}
我在哪裏myiterator別名聲明行編譯錯誤;錯誤是:「失蹤」;「在標識符「myiterator」之前「。
是的,這個工程!但爲什麼'typedef'在這裏還不夠?爲什麼我應該指定額外的typename關鍵字? –
C++是一個複雜的怪物,這就是爲什麼;)任何時候你想訪問一個依賴於模板參數的類型,你需要'typename'。 – bstamour