C++ 初始化';元素';被'跳过;案例';标签
我不明白为什么会出现错误: “案例”标签跳过了“元素”的初始化 谁能给我解释一下吗C++ 初始化';元素';被'跳过;案例';标签,c++,debugging,C++,Debugging,我不明白为什么会出现错误: “案例”标签跳过了“元素”的初始化 谁能给我解释一下吗 void LinkedList::process_example(int choice) { switch(choice) { case 1: cout << endl << endl << "Current S = "; this->printSet(); cout << "Enter an
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;
}
}
void LinkedList::process\u示例(int选项){
开关(选择){
案例1:
cout addlementfromback(元素);//此处有错误
请尝试用{}
包装案例
,并将所有语句放入{}
中
case 1:
{
cout << endl << endl << "Current S = ";
this->printSet();
// and other mess
}
break;
请参见当在一个案例
中声明变量时,下一个案例
在技术上仍然在同一范围内,因此您可以在那里引用它,但是如果您在没有首先点击该案例的情况下点击该案例
,您将最终调用未初始化的变量。此错误阻止了这种情况
您所需要做的就是在switch
语句之前定义它,或者在退出特定的案例之前使用大括号{}
确保它超出范围,这一错误非常清楚,switch语句的使用也非常奇怪。每个案例
都不会引入新的范围(仅{})所以当你在一个case中声明一个变量时,它应该放在它自己的块中。@billiz为什么用{}来解决问题呢???作用域问题,case:
直到break
才引入新的作用域,所以你必须使用{}
我还是不太明白,有什么文章我能读得更明白吗???
case 1:
initializeElement();
break;
case 2:
doSomethingElse();
break;