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

Nad*_*eri 0 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;
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到这个错误

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

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

iam*_*ind 6

你错过了typename关键字:

pair<typename multimap<S,T>::iterator, typename multimap<S,T>::iterator> pairIt;
     ^^^^^^^^                          ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

注意,S并且Ttemplate类型; 当它们与::操作员结合使用以获得另一种依赖类型时,必须使用typename.

另一个关于这个主题的好讨论.