Метод переопределения, который возвращает разыменование к этому
У меня есть метод в Base
класс, который возвращает разыменование this
, Я хотел бы использовать этот метод в Derived
класс, но и немного расширить его. Пример будет говорить сам за себя:
#include <iostream>
class Base {
private:
int value = 0;
public:
int getValue() { return value; }
virtual Base& increase() {
value++;
return *this;
}
};
class Derived : public Base {
public:
Derived& increase() {
Base::increase();
if (getValue() == 1) std::cout << "Success" << std::endl;
return *this;
}
};
Как я понимаю, в приведенной выше реализации Base::increase();
просто увеличит некоторые value
в временно выделенном Base
объект. Как я могу это исправить?
1 ответ
Решение
Base::increase();
вызывает базовый метод на this
(временный объект не задействован).
Вы можете даже написать это так, если вам понятнее
this->Base::increase();