I was wondering if there is a way such that we make all functions defined within a specific namespace friend
with a class?
In particular, I have a class, for example:
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*);
};
and a namespace B
as:
namespace B {
C* f1(C* x);
C* f2(C* x);
C* f3(C* x);
C* f4(C* x);
C* f5(C* x);
};
Now, I would prefer to avoid writing 5 lines in the class definition to make all five functions of the namespace B
friend with class C
and just tell the compiler that all of the functions defined within the namespace B
are friends with the class C
(i.e. can access its private members).
A quick fix I guess is to change the namespace to a class and define the functions as its static members and then declare the class B
as a friend of class C
. However, out of curiosity I was wondering if such thing is possible with namespaces as well or not?
Thanks in advance.