Re[7]: read_only ячейка
От: so5team https://stiffstream.com
Дата: 26.09.23 05:25
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>>Если у класса A слишком много друзей, то с классом A явно что-то не так.


S>Серьёзно: Если бы было ...
S>public read_only protected full_access:
S>
... то число геттеров могло бы поубавиться


Тут нужно смотреть по конкретной ситуации, а не по сферическим примерам в вакууме.
Из собственной практики могу вспомнить такой пример.
Есть у нас класс environment_t, который дает пользователю доступ к ряду публичных методов. Но внутри библиотеки нужно уметь обращаться и к закрытой части функциональности этого класса. Причем из разных мест библиотеки.

Вариант сделать все эти места (т.е. внутренние классы и функции, да и не только внутренние, некоторые публичные классы/функции в своей реализации так же должны обращаться к закрытой части environment_t) друзьями environment_t -- это прямой путь в никуда (иметь вот такие списки не есть хорошо в долгосрочной перспективе).

Поэтому проще объявить для environment_t другом отдельный внутренний класс internal_env_iface_t, который живет в специальном внутреннем пространстве имен и не предназначен для прямого использования конечным пользователем.

Конечно, в C++ нет средств полностью ограничить доступ к internal_env_iface_t. Но при уже имеющейся сложности языка я не знаю, хотел бы иметь еще и такие возможности. ИМХО, прагматичнее просто сказать "вот это руками не трогать", а кто не внял, тот ССЗБ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.