十分不解,为何CList在第二次以后遍历时值就变了...(急问)

Stefine Stefine 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大致代码是这样的:
简要的说明下代码吧:

//用来存储手机名片姓名与号码
struct CONTACTPARTINFO
{
int nID;
BSTR strName;
BSTR strTelMobile;
};

类中声明:
CList<CONTACTPARTINFO, CONTACTPARTINFO &> m_lstPartContact;

//********************************************************************
//函数功能: 读取号簿信息(仅号码与姓名)保存到m_lstPartContact链表中
//********************************************************************
bool CContact::GetPartContact(void)
{
//得到pContact指针的部分省略...

m_lstPartContact.RemoveAll();

CONTACTPARTINFO contactPartInfo;

contactPartInfo.nID = i-1;

pContact->get_FirstName( &contactPartInfo.strName); pContact->get_MobileTelephoneNumber( &contactPartInfo.strTelMobile);

m_lstPartContact.AddTail(contactPartInfo);

}


//********************************************************************
// 函数功能: 显示号簿全部信息
// 参数: strContact为传出的参数,代表部分号簿内容
//********************************************************************
void CContact::ShowPart(CString& strContact)
{
POSITION pos = m_lstPartContact.GetHeadPosition();
while(pos)
{
strContact += m_lstPartContact.GetAt(pos).strName ;
strContact += m_lstPartContact.GetAt(pos).strTelMobile;

m_lstPartContact.GetNext( pos );
}
AfxMessageBox( strContact );
}

问题症状:
假如我输入两条名片信息 (名字,号码): (1,2) ,(3,4)
第一次打印出来是1234
第二次打印出来就是3434

后面假设你再添加两条名片 (5,6) (7,8)
打印出来就是34343434

我调试时,发现在CContact::GetPartContact(void) 中总是能正确获取到值啊,也就是加入前面四条时,m_lstPartContact 依次为(1,2) (3,4) (5,6) (7,8)啊,为何显示出来就变了咧?

问题出在遍历时吗? 急问?谢谢

规律:
连续输入四条:
第一次是12345678
第二次以后就是78787878
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
Stefine
VC/MFC 16,550 成员 421,606 内容