C ++,使用密钥类作为一组类的访问密钥

时间:2014-06-02 11:18:06

标签: c++ oop encapsulation friend access-control

我在某个项目中看到过这样的模式:

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,...)
我想知道这是一般的好习惯吗?有没有更好的方法来实现这一目标?

0 个答案:

没有答案