Comment utiliser une Union pour stocker 2 structures différentes dans un tableau 1 C

Je voudrais créer un tableau pour stocker 2 types de structures C – Employee et son “enfant”, Manager . J’ai créé une Person syndicale pour tenir l’un ou l’autre, puis j’ai essayé de créer un tableau avec ce dernier, mais cela ne fonctionne pas. Comment puis-je faire fonctionner un tel tableau? Le code correspondant est ci-dessous.

  typedef struct { char name[20]; double salary; } Employee; //Manager struct inheriting from employee struct typedef struct { Employee employee; int bonus; } Manager; typedef union{ Employee e; Manager m; } Person; Manager boss; Employee harry ; Employee tommy; Person staff[]; int main(void) { ... boss = newManager(...); harry = newEmployee(...); tommy = newEmployee(...); 

Je ne pouvais pas faire fonctionner la ligne suivante, j’ai essayé beaucoup de choses.

  staff[3] = {boss, harry, tommy}; 

Essayer:

 staff[0].manager = boss; staff[1].employee = harry; /* ... */ 

Ou peut-être:

 Person staff [] = { {.manager = boss}, {.employee = harry}, /* ... */ }; 

Mais posez-vous la question suivante: comment saurez-vous plus tard si le staff[x] est un gestionnaire ou un simple employé?