'元素'的初始化被'case'标签跳过

我不明白为什么我得到错误:

“元素”的初始化由“大小写”标签跳过。

有人可以向我解释吗?

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 1: { cout << endl << endl << "Current S = "; this->printSet(); // and other mess } break; 

你应该把所有这些陈述放在function上,保持清楚的陈述。 例如,写下这种风格:

 case 1: initializeElement(); break; case 2: doSomethingElse(); break; 

请参阅链接

当一个variables声明为一种case ,下一个case在技​​术上仍然在相同的范围内,所以你可以在那里引用它,但是如果你没有触及这个事件,那么你最终会调用一个未初始化的variables。 这个错误阻止了。

您只需在switch语句之前定义它,或者在退出特定case之前使用大括号{ }来确保它超出范围。