次の場合:
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);
(from: " c unions and polymorphism ")
ただし、次のことが許可されないのはなぜですか。
C cArray[2];
c[0]=myA;
c[1]=myB;
これにより、明示的なキャストなしで互換性のないタイプエラーが発生します。明示的なキャストを回避する方法はありますか?