我想知道是否有一种方法可以在特定命名空间中定义的所有函数都与类成为朋友?
具体而言,我有一个类,例如:
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
的所有五个函数都成为类C
的友元,并告诉编译器在命名空间B
内定义的所有函数都是类C
的友元(即可以访问其私有成员)。
我猜一个快速的解决方法是将命名空间改为一个类,并将函数定义为其静态成员,然后声明类B
为类C
的友元。但是,出于好奇,我想知道是否也可以对命名空间进行这样的操作?
谢谢提前。