2

让我有以下代码

#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);

为什么这样?

4

1 回答 1

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()

于 2013-10-17T11:15:58.370 回答