无法访问模板函数内的迭代器

时间:2013-10-17 11:13:50

标签: c++ templates map

让我有以下代码

#include <map>
template <typename Value>
static void Get(std::map<int, Value> & map)
{
    typename std::map<int, Value>::const_iterator it;
    it _it = map.find(1);
}
void main()
{
    std::map<int,std::string> _map;
    _map.insert(std::pair<int,std::string>(1, "1"));
    Get<std::string>(_map);
}

我收到了该行的错误

it _it = map.find(1);

为什么这样?

1 个答案:

答案 0 :(得分:6)

如果您打算将it定义为类型,则需要typedef

typedef typename std::map<int, Value>::const_iterator it;

如果您想将it定义为变量:

typename std::map<int, Value>::const_iterator it;
it  = map.find(1);

或者只写:

auto it = map.find(1);

此外,void main()应为int main()