//data type 1
typedef struct t_A{
int mJ;
}A;
//data type 2
typedef struct t_B{
int mK;
}B;
//Function returning B object which is a rValue
B funcRetB(void)
{
B test;
test.mK = 9;
return test;
}
void main(void)
{
A a;
a = (A)funcRetB(); //How to typecast this without defining a variable of B?
}
上面的代码给出了错误 "错误C2440:'输入' :无法转换为' B'到' A'"。 是否可以在C中解决此错误?
答案 0 :(得分:0)
我相信,但无法在标准中快速找到它,typedef引入了一种只与自身兼容的新类型。
虽然A和B的定义相同,但编译器会将它们视为不同的类型。当函数返回类型B的完整对象时,编译器现在不知道如何将它复制到类型A的对象。因为复制对象,所以演员不会工作,因为就编译器而言,所有成员可能会有不同的布局,因此编译器不知道如何将对象复制到另一个。
请参阅评论中提供的链接以获取提示和技巧。