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;