vector <t> :: iterator - 无效?</t>

时间:2010-08-09 20:49:29

标签: c++ templates vector

  

可能重复:
  g++ “is not a type” error

以下内容无法编译:

1    template<typename T>
2    void foo(std::vector<T>::iterator & i)
3    {  
4    }

在Visual Studio上,我收到以下错误:

>(2) error C2065: 'i' : undeclared identifier
>(4) warning C4346: 'std::vector<_Tp>::iterator' : dependent name is not a type
     prefix with 'typename' to indicate a type
>(4) error C2182: 'foo' : illegal use of type 'void'
>(4) error C2998: 'int foo' : cannot be a template definition

1 个答案:

答案 0 :(得分:14)

std::vector<T>::iterator是模板参数依赖的类型,即T。因此,您应该以{{1​​}}:

作为前缀
typename

Here's an explanation.