Как мы все знаем, private объявления де-факто являются частью интерфейса класса, их изменение приводит к перекомпиляции зависящего кода. Кто как обходит проблему? Из того, что я перепробовал:
— непрозрачные ссылки на forward-объявления структур и функции для работы с ними;
— публичная структура, которая агрегируется в класс-реализацию;
— абстрактный класс, он же «интерфейс», от которого наследуется реализация.
Но у всех них есть свои недостатки. Есть ли какие-то иные приемы, которые я упустил?