如何在不使用友元类的情况下访问另一个类的私有成员

时间:2015-04-24 03:39:41

标签: c++ inheritance

假设我们有以下内容:

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(),而不是使用友元类,并在derived1中保持fun()私有。

1 个答案:

答案 0 :(得分:0)

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

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();
  }
};