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

После переопределения одной перегрузки log(string) перестал компилироваться

class Logger {
public:
    virtual void log(int code);
    virtual void log(const std::string& msg);
};

class FileLogger : public Logger {
public:
    void log(int code) override;
};

FileLogger fl;
fl.log(std::string("started"));   // ошибка компиляции

Почему метод базового класса стал недоступен?

  • Имя log в наследнике скрыло все перегрузки базы
  • override удаляет остальные перегрузки из базы
  • Виртуальные методы нельзя перегружать
  • string нельзя неявно передать по const&

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

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

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

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