Beginner C++: Why is this switch statement giving me an error?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int menuDecision = displayMenu(); //WHILE USER DOESN'T SELECT QUIT while(menuDecision != 3){ /* if(menuDecision == 1){ Queue myQueue; } else{ Stack myStack; } */ switch(menuDecision){ case 1: Queue myQueue; break; case 2: Stack myStack; break; } menuDecision = displayMenu(); } |
当我把上面的语句作为switch语句运行时,它会给我一个错误,但是当我使用if/else时,如果它工作了,怎么会这样呢?基本上,程序根据菜单中选择的内容来实例化一个对象。一旦创建了一个对象,就调用了构造函数,而构造函数调用了另一个函数等等……基本上,在while循环中每次都会创建一个新对象。因为我在代码中没有得到很多反馈,所以上面的实现会被认为是"糟糕的编程"吗?
谢谢!
编辑:错误是:
1 2 3 4 5 | main.cpp:27:4: error: cannot jump from switch statement to this case label case 2: Stack myStack; ^ main.cpp:25:18: note: jump bypasses variable initialization case 1: Queue myQueue; |
C++不允许交换机(或其他类似的代码,如EDCOX1×0)来跳过初始化。在交换机中,