“Jump to case label” error when using vectors inside switch statement.
本问题已经有最佳答案,请猛点这里访问。
这是代码,当我添加另一个案例或一个死亡案例时,我会得到几个错误。我找不到任何基本错误,比如分号丢失之类的,当我只有一个案例时,代码可以正常工作。我通过开关教程进行了搜索,但我没有发现任何关于向量和开关语句混合的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | int main() { int r; while (cin >> r) { switch (r) { case 3: int y = 0; cout <<"Please enter some numbers, and I will put them in order." << endl; vector<int> nums; int x; while(cin >> x) { nums.push_back(x); y++; } sort(nums.begin(), nums.end()); int z = 0; while(z < y) { cout << nums[z] <<","; z++; if(z > 23) cout <<" " <<"User... What r u doin... User... STAHP!" << endl; } cout <<" " <<"You entered"<< nums.size() <<" numbers." << endl; cout <<"Here you go!" << endl; break; //In the following line I get the"jump to case label" error. //I use Dev C++ software. case 4: cout <<"it works!!!" << endl; break; } } system ("PAUSE"); return 0; } |
我错过了什么?
在案例中添加另一个范围:
1 2 3 4 5 6 7 8 9 10 11 12 13 | switch(n) { case 1: { std::vector<int> foo; // ... break; } case 2: // ... default: // ... } |
额外的范围限制了向量对象的生存期。如果没有它,跳转到case