
关于STL的MAP的问题
template<classK,classT)voidf(map<K,T>::iteratora);这样定义是错误的?那为什么template<classK,classT...
template<class K,class T)void f(map<K,T>::iterator a);
这样定义是错误的?
那为什么
template<class K,class T>void f(map<K,T> a);
就是正确的? 展开
这样定义是错误的?
那为什么
template<class K,class T>void f(map<K,T> a);
就是正确的? 展开
2个回答
展开全部
根据c++标准,你必须要这样声明
func(typename map<T,V>::iterator m)
因为map的类型是明确的,而map的迭代器类型却不明确,必须要加上typename关键字表示这是一个类型
源代码在vc6里应该可以编译通过,但是更加严格遵守c++标准的vc2003之后就无法通过了
func(typename map<T,V>::iterator m)
因为map的类型是明确的,而map的迭代器类型却不明确,必须要加上typename关键字表示这是一个类型
源代码在vc6里应该可以编译通过,但是更加严格遵守c++标准的vc2003之后就无法通过了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询