【问题标题】:How to access private members of a class by another class without using friend class [duplicate]如何在不使用朋友类的情况下由另一个类访问一个类的私有成员[重复]
【发布时间】:2015-07-02 12:22:48
【问题描述】:

假设我们有以下内容:

class base{
}

class derived1 : public base{
  private:
  void fun();
  friend class derived2;
}

class derived2 : public base{
  derived1 ob;
  void fun2(){
  ob->fun();
}

我想在derived2 的fun2() 中使用derived1 的fun() 而不使用朋友类并在派生1 中保持fun() 私有。

【问题讨论】:

  • 私有化的全部意义在于你不应该这样做。

标签: c++ inheritance


【解决方案1】:

不确定这是否适合您,但这里是:

class base{
   public:
   virtual void fun() {}
};

class derived1 : public base{
  private:
  void fun() {}
};

class derived2 : public base{
  derived1 ob;
  void fun2(){
  static_cast<base&>(ob).fun();
  }
};

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2015-11-24
    • 2015-03-06
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多