Можем ли мы увеличить повторное использование для этого ключевого шаблона защиты доступа:
class SomeKey {
friend class Foo;
// more friends... ?
SomeKey() {}
// possibly non-copyable too
};
class Bar {
public:
void protectedMethod(SomeKey); // only friends of SomeKey have access
};
Чтобы избежать повторных недоразумений, этот шаблон отличается от "Адвокат-клиент" :
- Это может быть более кратким, чем "Адвокат-клиент" (так как это не связано с проксированием через третий класс).
- Это может позволить делегирование прав доступа
- ... но его также более навязчивым в исходном классе (один параметр фиктивного метода для каждого метода)
(Обсуждается обсуждение в этом вопросе, поэтому я открываю этот вопрос.)