-1

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

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

为什么在“类型转换”上出现错误 C2440?

4

3 回答 3

2

这部分是问题:

(DATA)&data1

在这里,您将 make 的地址data1转换为指针 type struct DATA *。然后您尝试将其强制转换为非指针struct DATA类型,这可能是错误的原因。(提示:请在以后发布完整且未经编辑的错误消息。)

实际上,您根本不需要进行任何强制转换、指针地址处理或取消引用。只需将一个结构分配给另一个,编译器就会创建代码来进行正确的复制:

data2 = data1;
于 2012-12-14T23:30:22.817 回答
0

强制转换为结构类型是非法的。强制转换运算符指定的类型必须是void标量类型或标量类型(即算术或指针类型)。

这个:

data2 = data1;

是一种更简单的方法来做我认为你正在尝试做的事情(很难说)。

于 2012-12-15T08:56:08.313 回答
0

正确的做法是:

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

但这是没用的......什么不这样做:

struct DATA data1, data2;
data2 = data1;
于 2012-12-15T00:20:27.310 回答