求教!MFC中全局变量的问题

lrsunny1 2009-12-17 10:39:41
情况是这样的:
要求MFC中用链表做通讯录。我自己写了一个链表类A,其中用一个成员函数定义并初始化了头结点,将头head->next=NULL;

AddSingleInfo* AddSingleInfo::HeadInit()
{
AddSingleInfo *head=new AddSingleInfo;
head->next=NULL;
return head;
}



然后在第类B中用一个全局变量h接下了这个头head,并在该类中添加节点,即将h->next=新节点。

AddSingleInfo *h=temp.HeadInit();



AddSingleInfo *p=new AddSingleInfo;
h->next=p;
p->pre=h;
p->name=m_name;
p->street=m_street;
p->city=m_city;
p->eip=m_eip;
p->state=m_state;

h=p; //将p传给h
p->next=NULL;
MessageBox("添加成功!");
CDialog::OnOK();


问题是我在类C中用全局变量h时,它还是h->next=NULL,并没有接起链表。
想请教如何能使链表接起,或者其他什么方法可以实现?
谢谢!
...全文
153 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lrsunny1 2009-12-18
  • 打赏
  • 举报
回复
谢谢各位了!以后还要研究
hometo 2009-12-18
  • 打赏
  • 举报
回复
入来学习的.
lrsunny1 2009-12-18
  • 打赏
  • 举报
回复
恩 谢谢qiaozhiyuan。
其实问题就是在AddSingleinfo.CPP中定义并初始化了head,在Addinfo.CPP中用一个全局变量h接住了head。想更改全局变量的值并用于的cpp中。不知还有什么好方法没?
chenhl0201 2009-12-18
  • 打赏
  • 举报
回复
困惑已久的问题
qiaozhiyuan 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lrsunny1 的回复:]
呵呵,没得办法,链表是作业要求
[/Quote]

邮件已发。
zack_hoo 2009-12-18
  • 打赏
  • 举报
回复
学习
lrsunny1 2009-12-18
  • 打赏
  • 举报
回复
呵呵,没得办法,链表是作业要求
bragi523 2009-12-18
  • 打赏
  • 举报
回复
按你的程序
h->next=NULL对了
icefairy 2009-12-18
  • 打赏
  • 举报
回复
mark
zhou1xp 2009-12-18
  • 打赏
  • 举报
回复
恩,给你个建议,写这样一个函数List(AddSingleInfo *head,AddSingleInfo * stu)返回head;
zhou1xp 2009-12-18
  • 打赏
  • 举报
回复
楼主在去看看C++语言的书吧,做链表是要一个过渡指针的
AddSingleInfo *p=new AddSingleInfo;
AddSingleInfo *temp=NULL;
temp=h;
p->pre=temp;
p->name=m_name;
p->street=m_street;
p->city=m_city;
p->eip=m_eip;
p->state=m_state;
p->next=NULL;

temp->next=p; //这里头结点的下一个节点指向p
temp=p;

MessageBox("添加成功!");
CDialog::OnOK();
如果你是只是要做一个链表,一个ADD(AddSingleInfo *)函数返回一个head就可以了,何必搞那么复杂

qiaozhiyuan 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lrsunny1 的回复:]
但注释掉以后自己开的第1和第2个节点没有连起来啊,那要怎么处理?
[/Quote]

看代码可以啊。
你把代码发给我,我给你改一下,qiaozhiyuan@sohu.com
lrsunny1 2009-12-18
  • 打赏
  • 举报
回复
但注释掉以后自己开的第1和第2个节点没有连起来啊,那要怎么处理?
mixdd 2009-12-18
  • 打赏
  • 举报
回复
//h=p; 注释掉
就可以了
mmilmf 2009-12-18
  • 打赏
  • 举报
回复

AddSingleInfo *p=new AddSingleInfo;

p->pre=h;
p->name=m_name;
p->street=m_street;
p->city=m_city;
p->eip=m_eip;
p->state=m_state;
p->next=NULL;

h->next=p; //这里头结点的下一个节点指向p
//h=p; 注释掉

MessageBox("添加成功!");
CDialog::OnOK();




怎么有了链表类,还要在其他类中建链表啊,这样不好,既破毁坏了类的封装性
整个链表的安全性不好
qiaozhiyuan 2009-12-17
  • 打赏
  • 举报
回复
你现在的h和p都指向p这个指针,而p->next = NULL;所以h = NULL;h是链表的头,你不能动,赋值后不要再给h赋值了,你把h = p;这一句屏蔽掉就可以了。

16,551

社区成员

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

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

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