c++ - 使用模板参数在模板类中定义一对迭代器

标签 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;

我在编译时得到这个错误

//Error 2 error C2923: 'std::pair' : 'std::multimap::iterator' is not a valid template type argument for parameter '_Ty1'

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

最佳答案

您错过了 typename 关键字:

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

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

另一个nice discussion关于这个话题。

关于c++ - 使用模板参数在模板类中定义一对迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8709990/

相关文章:

c++ - 仿函数与模板参数

c++ - 在头文件中声明一个返回二维数组的函数?

c++ - 通用类中的语法

html - mailchimp 模板导出到带有合并标签的 mandrill 问题

Java,从 ArrayList 中删除元素

c++ - 为什么 C++ STL 中的算法、迭代器和容器是分离的

c++ - 如何在cmake中链接共享对象?

java - 确定性语言的适用性

C++:友好模板参数的模板类型成员的正确语法?

java - 如何在 Java 中的链表上使用两个不同的迭代器?