Полиморфизм объединения C в массивах

Учитывая следующее:

typedef struct{
...
...
} A;

typedef struct{
...
... 
} B;

typedef union __attribute__((transparent_union)) {
    A a;
    B b;
} C;

Если я объявляю функцию

myMethod(C){
...
}

Следующее допустимо без явного приведения:

A myA;
B myB;

meMethod(myA);
myMethod(myB);

(из: " c unions and polymorphism")

Однако, почему следующее не разрешено:

C cArray[2];
c[0]=myA;
c[1]=myB;

Это дает ошибку несовместимого типа без явного приведения. Есть ли способ избежать явного приведения?

7
задан Community 23 May 2017 в 12:20
поделиться