Как определить функцию друга между двумя унаследованными классами иерархии в C

#class #oop #inheritance #friend-function #class-hierarchy

Вопрос:

Я хочу использовать функцию друга между двумя унаследованными классами иерархии, которые являются регулярными и Adhoc. Он восстанавливает ошибку, такую как : неизвестное имя типа ‘Adhoc’, друг void show(Обычный r, Adhoc a); Он показывает небольшую ошибку. Я не могу решить эту проблему.

 #include<string>
using namespace std;
class Employee{
  char name[25];
  int empid;
  public:
  void gete();
};

class Regular: public Employee{
  int basic,da,hra;
  public:
  void getr();
  friend void show(Regular r, Adhoc a);
};

class Adhoc: public Employee{
  int wages,hrs;
  public:
  void geta();
  friend void show(Regular r, Adhoc a);
};

  void Employee::gete(){
      cin>>name>>empid;
  }
  void Regular::getr(){
      cin>>basic>>da>>hra;
  }
  void Adhoc::geta(){
      cin>>wages>>hrs;
  }
  
  void show(Regular r, Adhoc a){
      cout<<r.basic<<endl<<r.da<<endl<<r.hra<<endl;
      cout<<a.wages<<endl<<a.hrs<<endl;
      cout<<(r.basic r.da r.hra)<<endl;
      cout<<a.wages*a.hrs<<endl;
  }

int main(){
  Regular r;
  Adhoc a;
  r.gete();
  r.getr();
  a.geta();
  show(r,a);
  return 0;
}```