Метод переопределения, который возвращает разыменование к этому

У меня есть метод в 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();
Другие вопросы по тегам