关于stl中iterator的问题

tx183584 2011-08-19 07:55:25

list<Gamer*>::iterator it_OnlineGamers;
for (it_OnlineGamers=OnlineGamers.begin();it_OnlineGamers!=OnlineGamers.end();it_OnlineGamers++)
{
if (!strcmp((*it_OnlineGamers)->GetName(),Name))
{
_Gamer=*it_OnlineGamers;
cout<<_Gamer->GetName()<<endl;
return true;
}
}


Gamer*是我new得到的.没有释放,_Gamer=*it_OnlineGamers;之后,返回还是空的指针的,这是为什么
...全文
99 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tx183584 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mltong2008 的回复:]

LZ,你没有吓我吧?

如果说_Gamer=*it_OnlineGamers 后为空,
那么前面的 if (!strcmp((*it_OnlineGamers)->GetName(),Name))就没有死掉吗?
->GetName时,可是空指针啊?

给的代码应该不全吧,从 if 到 _Gamer=*it_OnlineGamers 应该还有其它的操作吧?
[/Quote]
不是.是返回之后为空,但是这里能正常输出.说明_Gamer不为空!.
后来只好直接返回Gamer*指针,没问题
hugo 2011-08-22
  • 打赏
  • 举报
回复
代码看起来没问题;
pengzhixi 2011-08-22
  • 打赏
  • 举报
回复
只问一个问题那就是:_Gamer怎么来的,用来干什么
贪玩的老鼠 2011-08-22
  • 打赏
  • 举报
回复
Gamer* m_Gamer=NULL;

void GetXX9(Gamer* _Gamer)
{
--你的贴出的代码
}
--然后调用
GetXX9(m_Gamer);
--发现指针还是空,


整个过程是不是这样的啊?

如果是这样的话,问题就很简单了,
用指针的指针就OK了,
GetXX9(Gamer** _Gamer)


ywwj5858792qd 2011-08-20
  • 打赏
  • 举报
回复
*it_OnlineGamers也为空吗?
是不是要重载operate=
mltong 2011-08-20
  • 打赏
  • 举报
回复
LZ,你没有吓我吧?

如果说_Gamer=*it_OnlineGamers 后为空,
那么前面的 if (!strcmp((*it_OnlineGamers)->GetName(),Name))就没有死掉吗
->GetName时,可是空指针啊?

给的代码应该不全吧,从 if 到 _Gamer=*it_OnlineGamers 应该还有其它的操作吧?
见习学术士 2011-08-20
  • 打赏
  • 举报
回复
这段代码没问题,push_back的代码呢
tx183584 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qimiao77 的回复:]

//这句话能够通过
if (!strcmp((*it_OnlineGamers)->GetName(),Name))
{

_Gamer=*it_OnlineGamers;
--在这里肯定返回的不是空的,你可以调试到这里查看_Gamer
_Gamer是在哪里定义的!有没有别的地方改了值
[/Quote]
是在函数体外定义的,这是一个指针,然后通过参数传入.
贪玩的老鼠 2011-08-20
  • 打赏
  • 举报
回复
//这句话能够通过
if (!strcmp((*it_OnlineGamers)->GetName(),Name))
{

_Gamer=*it_OnlineGamers;
--在这里肯定返回的不是空的,你可以调试到这里查看_Gamer
_Gamer是在哪里定义的!有没有别的地方改了值

tx183584 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sharptiger123 的回复:]

_Gamer ===== p_Gamer ; // list<Gamer>::iterator it_OnlineGamers; for (it_OnlineGamers=OnlineGamers.begin();it_OnlineGamers!=OnlineGamers.end();it_OnlineGamers++)
{
if (!strcmp((*……
[/Quote]
没看懂什么意思...
tx183584 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ywwj5858792qd 的回复:]

*it_OnlineGamers也为空吗?
是不是要重载operate=
[/Quote]
不为空...
sharptiger123 2011-08-20
  • 打赏
  • 举报
回复
_Gamer ===== p_Gamer ; // list<Gamer>::iterator it_OnlineGamers; for (it_OnlineGamers=OnlineGamers.begin();it_OnlineGamers!=OnlineGamers.end();it_OnlineGamers++)
{
if (!strcmp((*it_OnlineGamers)->GetName(),Name))
{
_Gamer=*it_OnlineGamers;
cout<<_Gamer->GetName()<<endl;
return true;
}
}



tx183584 2011-08-19
  • 打赏
  • 举报
回复
没人知道吗..

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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