使用模板参数在模板类中定义迭代器对

时间:2012-01-03 09:13:09

标签: c++ templates iterator

我该如何定义 模板类中带有模板参数的迭代器对

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'的有效模板类型参数

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

1 个答案:

答案 0 :(得分:6)

您错过了typename关键字:

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

请注意,STtemplate类型;当它们与::运算符结合使用以获取另一个依赖类型时,必须使用typename

关于此主题的另一个nice discussion