我在某个项目中看到过这样的模式:
class AccessKey{
// a group of classes called privilegedClasses
friend class foo;
friend class bar;
// friend class other classes in privilegedClasses...
private :
AccessKey(){}; /*! private constructor */
static const AccessKey key; /*! private object, only for friend classes */
}
这是一个只有 privilegedClasses 可以访问它并拥有它的对象的类。 现在考虑有人正在编写一个函数,并希望将对该函数的访问权限限制为 privilegedClasses 中的类。她可以通过向参数添加AccessKey对象来实现。像这样:
void functionForPrivilegedClassses(AccessToken token, ...){
}
因此,只有 privilegedClasses 中的类才能调用此函数,因为只有它们才能拥有该类的对象。
调用将是这样的:functionForPrivilegedClasses(AccessKey::key,...)
我想知道这是一般的好习惯吗?有没有更好的方法来实现这一目标?