我不明白为什么我收到错误:
'case'标签跳过'element'的初始化.
有人可以向我解释一下吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
bil*_*llz 126
尝试换case
用{}
,并把所有的语句中{}
.
case 1:
{
cout << endl << endl << "Current S = ";
this->printSet();
// and other mess
}
break;
Run Code Online (Sandbox Code Playgroud)
你应该把所有这些陈述放在函数中,保持case
声明清楚.例如,写下这种风格:
case 1:
initializeElement();
break;
case 2:
doSomethingElse();
break;
Run Code Online (Sandbox Code Playgroud)
见 链接
小智 6
当在一个变量中声明一个变量时case
,从case
技术上讲,下一个变量仍在相同的范围内,因此您可以在此引用它,但是如果您case
未首先单击该变量就将其引用,则最终将调用一个未初始化的变量。此错误可以防止这种情况。
您需要做的就是在switch
语句之前定义它,或者使用花括号{ }
确保退出特定范围之前超出范围case
。
归档时间: |
|
查看次数: |
57535 次 |
最近记录: |