我想知道是否有一种方法,使我们在一个特定的命名空间的朋友中定义一个类的所有功能?
特别是,我有一个类,例如:
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的朋友.但是,出于好奇,我想知道这样的事情是否可以使用命名空间好吗?
提前致谢.