注意:这不是 C++ 问题,我不能使用 C++ 编译器,只能使用 C99。
这是有效的(并且可以接受的,漂亮的)代码吗?
typedef struct sA{
int a;
} A;
typedef struct aB{
struct sA a;
int b;
} B;
A aaa;
B bbb;
void init(){
bbb.b=10;
bbb.a.a=20;
set((A*)&bbb);
}
void set(A* a){
aaa=*a;
}
void useLikeB(){
printf("B.b = %d", ((B*)&aaa)->b);
}
简而言之,当我需要指定行为时,将“子类”转换为“超类”并在将“超类”重新转换为“子类”之后是否有效?
谢谢