Имеет ли значение, где в классе friend
пункт помещен (то есть в protected
блок в отличие от private
блок)?
Нет.
class X
{
public:
friend class A;
private:
friend class B;
protected:
friend class C;
};
Все три класса теперь друзья X
и разделить точно такие же привилегии.
Хорошим соглашением является объединение всех объявлений друзей для наглядности, но это просто стиль.
9) Имя, назначенное декларацией друга, должно быть доступно в
область действия класса, содержащая объявление друга. Значение
Декларация о дружбе совпадает с декларацией о дружбе
появляется вprivate
,protected
или жеpublic
(9.2) часть класса
член-спецификации.
Других решений пока нет …