结构';输入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;