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

Новое приватное поле в классе SDK сломало собранные клиентами плагины

Библиотека поставляется как .so с заголовком engine.h. В классе Engine добавили приватное поле std::mutex cacheLock_. Публичные методы не менялись. После обновления библиотеки плагины, собранные клиентами со старым заголовком, падают со случайной порчей памяти. Внутри команды каждое изменение engine.h пересобирает 400 файлов.

Какой приём решает обе проблемы?

  • Pimpl: поля в скрытом классе за указателем
  • Сделать все поля Engine публичными
  • Отметить новые поля как mutable
  • Объявить методы Engine виртуальными

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

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

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

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