请各位帮忙看看,奇怪的问题

oldbaby 2005-01-03 07:24:31
typedef map<string,pdata *> KeyType;

KeyType Keys;

bool GetData(const string key,pdata & p)
{
KeyType::iterator it;
it=Keys.find(key);
if(it==Keys.end())
return false;
obj=(*it).second;
return true;
}

上面的函数返回时 p=NULL; 为什么?
改为下面则可运行.(在类pdata中重载了operator =)
bool GetData(const string key,pdata & p)
{
KeyType::iterator it;
it=Keys.find(key);
if(it==Keys.end())
return false;
obj=* ((pdata *) (((*it).second)));
return true;
}
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldbaby 2005-01-03
  • 打赏
  • 举报
回复
to carylin(别信我,我在说谎);
刚试过,你的方法可行,为什么传一个指针进去不行,而要传一个指针的指针?
carylin 2005-01-03
  • 打赏
  • 举报
回复
是不是可以这样改:
bool GetData(const string key,pdata * p)
=》
bool GetData(const string key,ppdata ** pp)

p=(*it).second;
=>
*pp=(*it).second;
carylin 2005-01-03
  • 打赏
  • 举报
回复
理解错了
carylin 2005-01-03
  • 打赏
  • 举报
回复
p=(*it).second; // ??? 应该是 *p=(*it).second; 吧!?
oyljerry 2005-01-03
  • 打赏
  • 举报
回复
obj是什么>
oldbaby 2005-01-03
  • 打赏
  • 举报
回复
谢谢楼上的,我贴错了,第一个函数是
bool GetData(const string key,pdata * p)
{
KeyType::iterator it;
it=Keys.find(key);
if(it==Keys.end())
return false;
p=(*it).second;
return true;
}
avalonBBS 2005-01-03
  • 打赏
  • 举报
回复
bool GetData(const string key,pdata & p)
{
KeyType::iterator it;
it=Keys.find(key);
if(it==Keys.end())
return false;
obj=(*it).second;
//这儿的(*it).second的类型是pdata *,将它传给p不行吧
return true;
}
chenjieread 2005-01-03
  • 打赏
  • 举报
回复
不懂!!!高手快来啊

64,643

社区成员

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

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