C++ 当模板化类的继承时,如何使其保持泛型?

C++ 当模板化类的继承时,如何使其保持泛型?,c++,templates,inheritance,stl,C++,Templates,Inheritance,Stl,对不起,如果我的英语或我的编码惯例不好 std::list是STL列表。 我试图创建一个库,根据用户的选择无缝地使用std::list::iterator和std::list::reverse_iterator。 首先,我不想实现所有的std::list::iterator方法。所以我将把它们继承到我的类: template <class realIter> class directedListTypeIter : public realIter 是否要编译—而不添加列出所有可能继

对不起,如果我的英语或我的编码惯例不好
std::list是STL列表。
我试图创建一个库,根据用户的选择无缝地使用
std::list::iterator
std::list::reverse_iterator
。 首先,我不想实现所有的
std::list::iterator
方法。所以我将把它们继承到我的类:

template <class realIter> class directedListTypeIter : public realIter
是否要编译—而不添加列出所有可能继承值的内容

多谢各位


p、 本主题是关于如何模板化继承,而不是在一个接口中实现两种迭代器类型的使用。我的意思是,“C++标准库列表”用例只是一个更好地解释我的问题的例子

存在大量语法不正确且不一致的代码片段。你能展示一些编译的东西吗?@MarkB:如果你已经编辑了这个,请还原,新的状态决不会比原来的好。因此你的
directedTypeListIterator
可以是反向迭代器,也可以是普通迭代器?Std中有一个从任何类型的迭代器(甚至是用户定义的)创建
反向迭代器的方法。是否需要从StdLib迭代器类型派生?为什么不将它们包装(作为数据成员)?遗憾的是,您的
begin
设计将不起作用。这是因为
std::list::iterator
std::list::reverse_iterator
是不同的、不相关的类型。您的
directedListTypeIter
directedListTypeIter
也是如此。从同一函数返回任何一种类型都可能与从同一函数返回
列表
向量
一样。考虑到您唯一的用例被破坏,我想知道您的设计目标是什么。
directedListTypeIter<std::list<value>::iterator>
directedListTypeIter<std::list<value>::reverse_iterator>
directedListTypeIter& operator=(std::list<value>::reverse_iterator &constructorIter) {
   ((std::list<value>::reverse_iterator*)this)->operator=(constructorIter);
   return *this;
}

directedListTypeIter& operator=(std::list<value>::iterator &constructorIter){
   ((std::list<value>::reverse_iterator*)this)->operator=(constructorIter);
   return *this;
}
directedListTypeIter begin(std::list<value>& userList){ 
  directedListTypeIter<realIter> retVal;
  if (someCheck()){
    retVal = userList.begin();
  } else {
    retVal = userList.rbegin();
  }
  return retVal;
}
 directedListTypeIter& operator=(realIter &constructorIter){
   ((realIter*)this)->operator=(constructorIter);
   return *this;
 }