data.uData.serverinfo.iemi = pThis->imei;
data.uData.serverinfo.iemi是一个struct类型的 char imei[128];
pThis->imei 是一个private的char [128];在头文件中定义
但是编译的时候就报错
./Core/ServerManager.cpp:145:32: error: invalid array assignment
data.uData.serverinfo.iemi = pThis->imei;
这是什么情况啊
在
c
中data.uData.serverinfo.iemi
和pThis->imei
这两个参数不是指代数组的,而是代表数组指针,也就是记录数据存储在内存中的位置的。因为data.uData.serverinfo.iemi
不是一个独立数组,而是一个结构体中的数组,所以它在内存中的位置是与结构体绑定在一起的,也就是说你不能把一个外部数组的地址直接赋值给它(赋值是无效的,因为即使不发生错误,之后的程序还是会访问在结构体内的数组也就是原来数组的内容),所以也就造成了你这个错误。如果你要复制外部数组的值到结构体中的数组里,要使用memcpy
函数。如果你只想传递地址,那就把这个参数定义成指针。直接赋值?难道不是应该用
strcpy
或者memcpy
吗?如果想直接=
,应该用std::string,而不是char[]。