gpt4 book ai didi

c++ - 对象的访问控制

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:21 25 4
gpt4 key购买 nike

是否可以将类的功能仅限于某些对象(在 C++ 中)。这意味着,假设一个类中有 10 个方法,而这个类有 10 个对象。是否可以让 object1 和 object2 仅访问 3 个函数。Object3、object4、object5、object6 访问 6 个函数。其余对象访问所有功能?

我正在尝试实现一个访问控制系统,一般用户只能看到一些有限的功能。特权用户可以有更多的访问权限,管理员可以访问所有功能。

一种方法是使用继承,像这样:

class PublicFeatures
{
public:

// add some methods here;
};

class ProtectedFeatures:public PublicFeatures
{
public:

// add some more methods here;
};

class AdminFeatures:public ProtectedFeatures
{
public:

// add rest of the methods here;
};

在这种情况下,我们根据所需的访问级别实例化三个类中任何一个的对象。但我想的是只有一个类,并以某种方式限制对该特定对象的某些方法的访问。

有可能做这样的事情吗?或者我必须遵循不同的方法来实现访问控制?

最佳答案

据我所知,没有。然而,这是面向方面编程研究的一部分。我在这本书中看到了您需要的内容:Aspect Oriented Software Development .

您面临的主要问题是缺乏对函数“谁是调用者”的了解。您可以要求每个调用者调用您的对象的方法,传递 this 作为对自身的一种身份验证形式。远非完美,但使用此解决方案,您可以将每个方法包装在执行 ACL 的预方法中。

另一种选择是声明你的实现类在方法方面完全私有(private),并定义一个“保镖”类,声明为第一个的 friend 。保镖类代表调用者执行调用(由于 friend 声明,这是唯一被授权这样做的人)。你仍然有身份验证的问题,你基本上是将整个目标类包装在它的保镖对象后面。

关于c++ - 对象的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com