C++ OOP 仅授予对某些类的访问权限

标签 c++ oop

<分区>

我想实现一个只能被我想要的类访问的Container类,类似于下面的方式

class ContainerAccess {
    // empty 
};

class Container{
  private:
    static void _do_stuff();
    static int _value;

    friend class ContainerAccess;
};

现在我想访问 Container 数据,如下所示:

class Processor: public ContainerAccess {
  public:
    void proccess() {
      Container::_do_stuff();
      Container::_value++;
    }
};

但是,这不起作用。这是为什么?以及如何做到这一点?

最佳答案

您的方法是错误的,因为友元不会被继承。但是,有一种很好的方法可以解决您要解决的问题,那就是私有(private)继承。

class Container
{
  protected:
    static void _do_stuff();
    static int _value;
};


class ContainerAccess : private Container 
{
    //using _do_stuff();
};

这样您就可以选择任何需要使用 class Container 的类,同时您还可以防止其他用户使用您的类。

关于C++ OOP 仅授予对某些类的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27487362/

相关文章:

c++ - STL 队列推送行为

c++ - 如何取回从 Eclipse CDT 中的构建配置中排除的文件?

c++ - 使用二进制信号量作为计数信号量

java - 如何确定一个类是否不可变

java - 考虑添加静态接口(interface)方法以为对象创建提供单一入口点

c++ - 如何使用 C++ 检查任务调度程序中的任务触发器?

c++ - 使用 gdb 调试共享库

javascript - ES6 静态方法与非静态和 ES5 OOP

php - 为什么PHP中的 "use"关键字需要和Interface一起使用?

java - 如何实现 - 创建结果的通用方法