'element'的初始化被'case'标签跳过
initialization of 'element' is skipped by 'case' label
我不明白为什么我会收到错误:
"元素"的初始化被"案例"标签跳过。
有人可以向我解释一下吗?
void LinkedList::process_example(int choice) {
switch(choice) {
case 1:
cout << endl << endl << "Current S = ";
this->printSet();
cout << "Enter an element :";
char* element = "lol";
//cin>>element;
cin.clear();
cin.ignore(200, 'n');
this->Addelementfromback(element); //error is here
cout << endl << endl << "Current S = ";
this->printSet();
break;
case 2:
this->check_element();
break;
case 3:
cout << endl << endl;
cout << "Current Set S = ";
this->printSet();
cout << endl << "S has ";
int count = this ->check_cardinality();
cout << count << " elements";
break;
}
}
尝试用 {}
包装case
,并将所有语句放在 {}
中。
case 1:
{
cout << endl << endl << "Current S = ";
this->printSet();
// and other mess
}
break;
你应该把所有这些语句放在函数中,保持case
语句清晰。例如,编写此样式:
case 1:
initializeElement();
break;
case 2:
doSomethingElse();
break;
见链接
当一个变量在一个case
中声明时,下一个case
在技术上仍然在相同的范围内,所以你可以在那里引用它,但如果你点击那个case
而不先点击这个,你最终会调用一个未初始化的变量。此错误可防止这种情况发生。
您需要做的就是在 switch
语句之前定义它,或者{ }
使用大括号来确保它在退出特定case
之前超出范围。
相关文章:
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 如何正确指定 goto 语句的标签?
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 通过水平滚动条更改标签
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- 在C++中存储要输入的标签列表
- 如何在等效列表中查找最小的连接标签
- 标签检测鼠标单击 c++
- 无法将行编辑中的文本打印到 Qt C++ 中的标签
- 如何根据C++中的标签运行特定函数?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 默认标签显然在 switch 语句中不起作用
- 在 gcc/clang (C++) 中获取函数范围之外的标签地址
- 在"printf"中使用标签"h"或"hh"是否涉及未定义的
- GTK 3 C++按钮中带有标签的图标
- 如何使QLineSeries/QXYSeries仅显示一个点标签
- 为什么case语句中的标签应该是常量
- 如何解决此错误:跳转到case标签交叉初始化
- 'element'的初始化被'case'标签跳过