struct' type cast' C中的错误?

时间:2012-12-14 23:26:05

标签: c visual-c++

假设我定义了一些结构DATA。然后我尝试以下代码:

struct DATA data1, data2;
data2 = (DATA)(*(DATA))&data1);

为什么我在'type cast'上收到错误C2440?

3 个答案:

答案 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;

是一种更简单的方式来做我想做的你想要做的事情(这很难说)。