假设我定义了一些结构DATA
。然后我尝试以下代码:
struct DATA data1, data2;
data2 = (DATA)(*(DATA))&data1);
为什么我在'type cast'上收到错误C2440?
答案 0 :(得分:2)
这部分是问题所在:
(DATA)&data1
在这里,您将data1
的地址作为指针,输入struct DATA *
。然后你尝试将它转换为非指针struct DATA
类型,这可能是错误。 (提示:请在将来发布完整和未经编辑的错误消息。)
您实际上根本不必进行任何转换或指针处理或解除引用。只需将一个结构分配给另一个,编译器就会创建代码来进行正确的复制:
data2 = data1;
答案 1 :(得分:0)
正确的做法是:
struct DATA data1, data2;
data2 = (struct DATA)(*((struct DATA*)&data1));
但这没用了......什么不这样做:
struct DATA data1, data2;
data2 = data1;
答案 2 :(得分:0)
转换为结构类型是非法的。由强制转换运算符指定的类型必须是void
或标量类型(即算术或指针类型)。
此:
data2 = data1;
是一种更简单的方式来做我想做的你想要做的事情(这很难说)。