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循环中都会创建一个新对象。由于我的代码中没有得到很多反馈,上述实现是否会被视为错误的编程'
谢谢!
编辑:错误是:
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;
答案 0 :(得分:4)
C ++不允许切换(或其他类似代码,例如goto
)跳过初始化。在交换机中,Queue
和Stack
都在同一范围内,并且交换机代码可能不会在该范围内初始化它们中的一个(或两个),具体取决于价值被开启。对于if / else,它们在不同的范围内也不是这样。