我有一个模板化基类,带有 2 个虚拟方法 begin() 和 end()。
我还有 Derived1 类,派生自 Base 类和 Derived2 类,派生自 Derived1 类。
我重写第一个派生类中的方法“begin()”,并重写第二个派生类中的方法“end()”。
Bud 我无法在我的第一个派生类中访问/使用方法“end()”。为什么?
#include <iostream>
template <class T>
class Base {
public:
virtual T begin() = 0;
virtual T end() = 0;
};
template <class T>
class Derived1 : public Base<T> {
public:
T begin() override {
return Base<T>::end() - 10; // not working
// return end() - 10; // also not working
}
};
template <class T>
class Derived2 : public Derived1<T> {
public:
T end() override {
return 10;
}
};
int main() {
Derived2<int> derived2;
std::cout << derived2.begin() << "\n";
std::cout << derived2.end() << "\n";
}
#include <iostream>
template <class T>
class Base {
public:
virtual T begin() = 0;
virtual T end() = 0;
};
template <class T>
class Derived1 : public Base<T> {
public:
T begin() override {
return this->end() - 10; // Access end() from the immediate base class
}
};
template <class T>
class Derived2 : public Derived1<T> {
public:
T end() override {
return 10;
}
};
int main() {
Derived2<int> derived2;
std::cout << derived2.begin() << "\n";
std::cout << derived2.end() << "\n";
return 0;
}