我想知道是否有一种方法可以让我们使用类在特定命名空间中定义所有函数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
与类成为朋友,C
而只是告诉编译器命名空间中定义的所有函数B
都是类的朋友C
(即可以访问其私有成员)。
我想一个快速的解决方法是将命名空间更改为一个类并将函数定义为其静态成员,然后将该类声明为 classB
的朋友C
。但是,出于好奇,我想知道命名空间是否也可以做到这一点?
提前致谢。