vs2017 "iterator":类型 从属名称的使用必须以“typename”为前缀 问题的解决

在进行STL实验时,遇到VS2017运行时报'iterator': 类型从属名称的使用必须以'typename'为前缀的错误。通过更改项目属性的平台工具集为VS2015(V140)成功解决问题,也可通过VS Installer添加相应工具集。
摘要由CSDN通过智能技术生成

最近做STL实验时遇到了一个问题,在模板函数中使用泛型变量,编写的时候不报错,但是在运行的时候报了如下错误

源代码是这样的

template<class T1, typename T2, typename T3> 
void display(string name, T1& m, T2 key_type, T3 val_type)
{
	cout << name;
	unordered_multimap<T2, T3>::iterator it = m.begin();
	while (it != m.end())
	{
		cout << (*it).first << "/" << (*it).second << " ";
		it++;
	}  cout << endl;
}

这个函数的目的很简单,就是利用迭代器显示数据,T2,T3是map的键值类型,报了这个错误之后,百度了也没有找到结果,写代码的时候没有报错,说明这种写法原本可能是被运行的,所以我估计可能的平台问题,于是我尝试如下解决方式:

项目名-->右键-->属性,在常规中找到平台工具集,将平台工具集修改成VS2015(V140),点击确定,如下:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值