Мне было интересно, есть ли такой способ, чтобы все функции, определенные в определенном пространстве имен friend
, имели класс?
В частности, у меня есть класс, например:
class C {
private:
// ...
public:
// ...
friend C* B::f1(C*);
friend C* B::f2(C*);
friend C* B::f3(C*);
friend C* B::f4(C*);
friend C* B::f5(C*);
};
и пространство имен B
как:
namespace B {
C* f1(C* x);
C* f2(C* x);
C* f3(C* x);
C* f4(C* x);
C* f5(C* x);
};
Теперь я бы предпочел не писать 5 строк в определении класса, чтобы сделать все пять функций пространства имен B
friend с классом C
и просто сообщить компилятору, что все функции, определенные в пространстве имен B
являются друзьями класса C
(т.е. могут обращаться к своим частным членам).
Быстрое исправление, я думаю, это изменить пространство имен на класс и определить функции как его статические члены, а затем объявить класс B
как друга класса C
. Однако из любопытства мне было интересно, возможно ли такое с пространством имен или нет?
Спасибо заранее.