Может быть, я думаю об этом неправильно, но вот идея:
Класс A получает, как часть своего конструктора, указатель на класс B и сохраняет этот указатель в закрытой переменной. Класс B предоставляет открытую функцию F. Я хотел бы, чтобы класс A и все классы, которые наследуются от класса A, НЕ могли вызывать B.F.
Идея состоит в том, что класс A будет реализовывать свою собственную версию F, которая вызывает B.F, но остальная часть кода не должна вызывать B.F. Если это имеет значение, эти два имеют разные сигнатуры функций.
Можно ли это сделать? Или это должно быть сделано? Может быть, другой путь, например, класс C, который наследуется от класса B и скрывает публичные функции? (Неужели это вообще можно сделать?)