TreeWasTaken
2022-07-02T23:14:47+00:00
我跟着黑马视频学的,但是为什么这个代码中无法达到死循环呢?
我把switch放入死循环了,添加新职工也非常顺利,可是在添加新职工之后就显示程序已结束退出循环了。
我检查了代码,和老师敲得一样啊,为什么不行呢?[img]https://img.nga.178.com/attachments/mon_202207/05/-7Q2q-6fK1nT3cSj7-sg.jpg[/img][img]https://img.nga.178.com/attachments/mon_202207/05/-7Q2q-v97K18T3cSj7-sg.jpg[/img]
[quote][pid=622788260,32564700,1]Reply[/pid] Post by [uid=34848232]there is [/uid] (2022-07-05 07:38):
你每个switch分支都break出了while[/quote]我只是break出了switch循环啊,还是在while循环中呢
[quote][pid=622788480,32564700,1]Reply[/pid] Post by [uid=1907172]不知道昵称是什么[/uid] (2022-07-05 07:41):
break换成continue?[/quote]这个不行啊,switch语法就是规定break不能换呀
[quote][pid=622788260,32564700,1]Reply[/pid] Post by [uid=34848232]there is [/uid] (2022-07-05 07:38):
你每个switch分支都break出了while[/quote]你这个回答就很绝
教你你个日志大法来调试。
把while循环的代码块的开头和结尾加上日志,打印出随便什么字符串来。
然后在addemp 这个函数调用的上面和下面也打印点什么。
最后在整个main的结尾retuan0前也打印点什么。
最后运行,看输出的日志就知道运行到哪一步挂了。
日志大法好!
是不是和visual Studio程序有关呢?因为我一开始貌似出问题了,无法包含某个头文件,怎么试都不行,最后删除项目,新建一个项目就可以包含头文件了………
[quote][pid=622790234,32564700,1]Reply[/pid] Post by [uid=74084]洛亚[/uid] (2022-07-05 07:57):
add_emp()里面有什么?[/quote]添加新职工的代码。
int addnum;
cin>>addnum;
if(addnum>0)
{
跳转到一个判断是否id重复的函数
然后就是开辟新空间
newsize=this->m_empnum+addnum;
worker** newspace=new worker*[newsize];
然后就是添加id姓名之类的,并且把worker指针 指向不同的子类,因为worker父类下有三个员工 经理 老板的子类。
最后是把旧的空间删除,把指针指向新空间,
更新人数,保存文件
这些代码太多了就不打了。
}
你把add_emp注释掉,看看这个switch能不能正常跑。