-1

Suppose we have the following:

class base{
}

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

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

I want to use fun() of derived1 in derived2's fun2() wihtout using friend class and keeping fun() private in derived1.

Krease
  • 15,805
  • 8
  • 54
  • 86

1 Answers1

0

Not sure whether it is a viable work around for you, but here it is:

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();
  }
};
R Sahu
  • 204,454
  • 14
  • 159
  • 270