结构';输入cast';C中的错误?

结构';输入cast';C中的错误?,c,visual-c++,C,Visual C++,假设我定义了一些结构数据。然后我尝试以下代码: struct DATA data1, data2; data2 = (DATA)(*(DATA))&data1); 为什么在“类型转换”中出现错误C2440?这部分是问题所在: (DATA)&data1 在这里,您将data1making的地址作为指针,键入structdata*。然后尝试将其转换为非指针struct DATA类型,这可能就是错误所在。(提示:请以后发布完整且未经编辑的错误消息。) 实际上,您根本不必执行任何强制

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

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

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

这部分是问题所在:

(DATA)&data1
在这里,您将
data1
making的地址作为指针,键入
structdata*
。然后尝试将其转换为非指针
struct DATA
类型,这可能就是错误所在。(提示:请以后发布完整且未经编辑的错误消息。)

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

data2 = data1;

正确的做法是:

struct DATA data1, data2;
data2 = (struct DATA)(*((struct DATA*)&data1));
但这是无用的。。。不这样做的原因:

struct DATA data1, data2;
data2 = data1;

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

这:


是一个更简单的方法来做我认为你正在尝试做的事情(很难说清楚)。< / P> @ MelpOMeN:让我为你谷歌:你是编译为C还是C++?“C”标记意味着C,但是引用类型< >结构数据> /CUT>作为<代码>数据< /代码>意味着C++。警告类型不是“代码>数据*/CODE”,而是<代码>结构数据*>代码>

data2 = data1;