2012-01-03 100 views
0

我如何定义 对迭代器的模板类模板参数定义对迭代器的模板类模板参数

template <typename S,typename T> 
class pairMove :public pair<S,T> 
{ 

private: 
    pair< multimap<S,T>::iterator , multimap<S,T>::iterator > pairIt; 

我得到这个错误在编译时

//错误2错误C2923:'std :: pair':'std :: multimap :: iterator'为 参数'_Ty1'不是有效的模板类型参数

任何解决方案来解决我的问题

回答

6

你错过了typename关键字:

pair<typename multimap<S,T>::iterator, typename multimap<S,T>::iterator> pairIt; 
    ^^^^^^^^       ^^^^^^^^ 

需要注意的是,STtemplate类型;并且当它们与::运营商组合使用以获得另一个依赖类型时,必须使用typename

关于此主题的另一个nice discussion