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

How to access private members of a class by another class without using friend class

本文关键字:访问 成员 一个 另一个 情况下 友元      更新时间:2023-10-16

>假设我们有以下内容:

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() 私有。

不确定这对您来说是否可行,但这里是:

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