'元素'的初始化被'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
之前使用大括号{ }
来确保它超出范围。