Вступить в клуб →
лёгкаявопросООП, исключения и дизайн классов

Переопределённый обработчик событий ни разу не вызывается

class Handler {
public:
    virtual void onEvent(const Event& e) const { /* пусто */ }
};

class AuditHandler : public Handler {
public:
    virtual void onEvent(const Event& e) { audit_.write(e); }
};

const Handler& h = auditHandler;
h.onEvent(evt);

Аудит пуст: вызывается пустая базовая версия. Компилятор молчит. Как ловить такие ошибки?

  • Писать override — сигнатура не совпала по const
  • Писать virtual в производном классе ещё раз
  • Сделать базовый метод чисто виртуальным = 0
  • Вызывать метод через указатель, а не ссылку

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела