我有一个第一个类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)