假设我DATA
定义了一些结构。然后我尝试以下代码:
struct DATA data1, data2;
data2 = (DATA)(*(DATA))&data1);
为什么在“类型转换”上出现错误 C2440?
假设我DATA
定义了一些结构。然后我尝试以下代码:
struct DATA data1, data2;
data2 = (DATA)(*(DATA))&data1);
为什么在“类型转换”上出现错误 C2440?
这部分是问题:
(DATA)&data1
在这里,您将 make 的地址data1
转换为指针 type struct DATA *
。然后您尝试将其强制转换为非指针struct DATA
类型,这可能是错误的原因。(提示:请在以后发布完整且未经编辑的错误消息。)
实际上,您根本不需要进行任何强制转换、指针地址处理或取消引用。只需将一个结构分配给另一个,编译器就会创建代码来进行正确的复制:
data2 = data1;
强制转换为结构类型是非法的。强制转换运算符指定的类型必须是void
标量类型或标量类型(即算术或指针类型)。
这个:
data2 = data1;
是一种更简单的方法来做我认为你正在尝试做的事情(很难说)。
正确的做法是:
struct DATA data1, data2;
data2 = (struct DATA)(*((struct DATA*)&data1));
但这是没用的......什么不这样做:
struct DATA data1, data2;
data2 = data1;