c++ - 'element' 的初始化被 'case' 标签跳过

标签 c++ debugging

我不明白为什么会出现错误:

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;

link

关于c++ - 'element' 的初始化被 'case' 标签跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669457/

相关文章:

javascript - Webpack 2 sourcemaps 不生成

C++如何传递命令行参数来读取txt文件

java - 如何在android或Java中使用调试器?

c++ - 为什么 GCC 不显示匿名变量的任何错误?

c++ - 如何为概念重载函数?

javascript - 如何在 javascript 中修复此错误 "missing; before statement"?

python - 在程序中跳入 Python 交互式 session ?

debugging - Qt Creator忽略断点

c++ - 通过数学引用传递

c++ - 如何将结构数据类型传递给模板?