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();
}
Run Code Online (Sandbox Code Playgroud)
为什么当我将上面的代码作为 switch 语句运行时会出现错误,但当我使用 if/else-if 时它会起作用?基本上,程序根据菜单中选择的内容来实例化一个对象。一旦创建了对象,就会调用构造函数,构造函数会调用另一个函数,依此类推...基本上,每次在 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;
Run Code Online (Sandbox Code Playgroud)
小智 5
C++ 不允许开关(或其他类似代码,例如goto)跳过初始化。在开关中, 和Queue都Stack处于相同的范围内,并且开关代码可能不会在该范围内初始化其中一个(或两个),具体取决于所打开的值。对于 if/else 来说情况并非如此,它们处于不同的范围。
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |