小编neu*_*euo的帖子

无效的协变返回类型,嵌套类c ++

我有一个第一个类A,它包含一个带有虚方法的迭代器嵌套类:

template <typename T >
class A {
  public:
      class iterator {
      public:
          virtual ~iterator() {};
          virtual T& operator++();
       };

      virtual iterator begin() const = 0;
};
Run Code Online (Sandbox Code Playgroud)

我有第二个B类,它覆盖虚拟方法:

template <typename T >
class B : public A<T> {
   public:
      class iterator : A<T>::iterator {
          T& operator++() override { 
              iterator p(*this);
              return p; //for exemple
          }
      };

   iterator begin() const override {
       return iterator(this);// for exemple 
   } 
};
Run Code Online (Sandbox Code Playgroud)

但是当我使用B类时:

B<int> test;
Run Code Online (Sandbox Code Playgroud)

我有这样的东西,编译错误:

error: invalid covariant return type for 'B<T>::iterator B<T>::begin() const …
Run Code Online (Sandbox Code Playgroud)

c++ virtual covariance covariant-return-types

3
推荐指数
1
解决办法
58
查看次数

标签 统计

c++ ×1

covariance ×1

covariant-return-types ×1

virtual ×1