Переопределённый обработчик событий ни разу не вызывается
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
- Вызывать метод через указатель, а не ссылку
