一个迭代器使用的方法 请大神们进来瞄一眼 跪求!!!!!!!!!

chen281147271 2012-05-25 10:49:13
问题是这样的 我把一个结构体放进了 一个list中 list<AClientMedinceLocation>

然后定义了一个迭代器 list<AClientMedinceLocation>::iterator p

最后通过for循环来输出list里面的东西

list<AClientMedinceLocation> clientMedinceLocation
for (p=clientMedinceLocation.begin();p!=clientMedinceLocation.end();p++)

//比如说结构体里面 有个成员叫ID
P->ID;//实验了下这样确实可以出去数据 但是我现在需要的是 以结构体的形式发送数据 不是得到一个个成员的值
//是用socket方式发送的
send(ConnectSocket,(char*)(&(AClientMedinceLocation)(*p)),sizeof(AClientMedinceLocation),0)
//现在问题来 就是那边客户端一接受到我的这条数据就会崩溃 断点到这里就那边客户端就崩
//那边客户端提供的接口就是一个 ClientMedinceLocation类型的结构体 而我这边程序是叫AClientMedinceLocation
//现在在想 是不是就是一个结构体名字不一样导致的崩溃(就一个名字不一样 里面成员是完全一样的!)还是另有其他原因 跪求大神解答
...全文
100 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen281147271 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

晕 你在你这边 和客户那边 使用了不同的结构体?
我感觉是不行的
你在你代码里写个class A{};和客户代码里写个class A{};
他俩产生的对象 能兼容么?肯定不兼容
[/Quote]
帅锅 我是send给手机的 然后手机的程序不是我写的 我只知道 他需要的是一个叫ClientMedinceLocation的结构体 然后我这边是因为已经存在了一个叫ClientMedinceLocation的结构体 为了不同名 我就在前面加了一个A
但是我里面的东西是完全一样的啊!
chen281147271 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

晕 你在你这边 和客户那边 使用了不同的结构体?
我感觉是不行的
你在你代码里写个class A{};和客户代码里写个class A{};
他俩产生的对象 能兼容么?肯定不兼容
[/Quote]

帅锅 我是Send跟安卓手机上面的 手机那边不是另外一个公司写的 我只知道他需要的我这边Send一个结构体过去

给的文档是 需要ClientMedinceLocation的一个结构体 然后我这边已经存在了一个ClientMedinceLocation名字的结构体 我所以就在前面加了个A
chen281147271 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

里面成员是完全一样的
------
成员的申明顺序也一样吗
[/Quote]

是哦 完全是一样的!!
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
至于原理 我认为UDT是无法通用的 但是内置类型可以通用
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
教你个方法 你写个算法 把结构体里的东西 全部弄到一个char数组中 你相当于写了个协议
然后 在客户端 遵从 相同的协议 将这个char数组解开 还原……
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
晕 你在你这边 和客户那边 使用了不同的结构体?
我感觉是不行的
你在你代码里写个class A{};和客户代码里写个class A{};
他俩产生的对象 能兼容么?肯定不兼容
dahaiI0 2012-05-25
  • 打赏
  • 举报
回复
里面成员是完全一样的
------
成员的申明顺序也一样吗
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
我也不是很了解socket,但是你可以试试 写个char a[10]={0x31,0x32,x00,0x33}这种,
然后用你的代码测一测,把a发过去看看。

另外,会不会与内存对齐有关?这个我真没研究过
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
send的时候,你把AClientMedinceLocation变成char* 就是以0x00为截断的字符串?
这个……这个……你的AClientMedinceLocation中 不会中途有个0x00 后面还有别的吧?
新手中 2012-05-25
  • 打赏
  • 举报
回复
有没有神,解吧!
quwei197874 2012-05-25
  • 打赏
  • 举报
回复
两边名字不一样可定不行啊
chen281147271 2012-05-25
  • 打赏
  • 举报
回复
好几天了 闹心...
chen281147271 2012-05-25
  • 打赏
  • 举报
回复
大神们快来啊 救命啊!

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧