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

时间:2014-12-15 15:24:11

标签: 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++;
    }
};

然而,这不起作用。这是为什么?怎么可能这样做?

2 个答案:

答案 0 :(得分:1)

你的方法是错误的,因为友谊不是继承的。但是,有一种很好的方法可以解决你想要解决的问题和私人继承问题。

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


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

通过这种方式,您可以选择需要使用的任何类class Container,同时还可以阻止其他用户使用您的课程。

答案 1 :(得分:-2)

一种可能的替代方法是不使Container私有静态方法,而是将它们公之于众。

然后,在您的main函数中,创建一个Container的实例,并将其传递给需要访问Container提供的功能的方法/类。

class Processor {
  public:
    void process(Container & container) {
      container.do_stuff();
      container.value++;
    }
};

您不提供Container实例的方法无法运行。