0

2 種類の C 構造体を格納するための 1 つの配列を作成したいと思います -Employeeとその「子」です Manager。それらのいずれかを保持するユニオンを作成Personし、それを使用して配列を作成しようとしましたが、機能しません。このような配列を機能させるにはどうすればよいですか? 関連するコードは以下です。

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

次の行が機能しませんでした。多くのことを試しました。

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

1 に答える 1

1

試す:

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

または多分:

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

staff[x]しかし、自分自身に問いかけてみてください:管理者か単なる従業員かを後でどのように知ることができますか?

于 2012-05-13T21:16:14.520 に答える