问题:
在写仪器管理系统时,在用switch case写选择 时,发现一个小问题,当在case下面直接初始化变量时,会报错“对‘ temp’的初始化被‘ case’标签跳过”
例如
switch(cho3)
{
case 1:
department temp;//创建一个新部门
//******在这里创建一个新对象,结果被case直接跳过,使得程序报错
cout<<"请输入部门编号:";
cin>>temp.denum;
while (myinstrument.de_search2(temp.denum))
{
cout<<"部门编号重复啦!~~~~(>_<)~~~~ !"<<endl;
cin>>temp.denum;
}
cin.clear();
cin.sync();
cout<<"部门名:";
cin>>temp.name;
cout<<"部门编号:";
cin>>temp.denum;
myinstrument.Adddepartment(temp);//将上面的部门信息全都保存下来
myinstrument.Save2();//将信息写入文档
cout<<"信息保存成功"<<endl;
break;
解决方法:
方法一:如果你要在case后面初始化变量就要用{}将这些语句括起来
方法二:在switch-case结构的外面初始化变量