C++ switch case花括号前报错期望主表达式是什么原因?
问题原因及修复方案
你代码的编译错误由以下语法问题导致:
- 核心报错原因:
default标签后未跟随任何语句就直接结束switch块,C++语法要求case、default这类标签后必须至少存在一个语句(哪怕是仅表示空语句的分号),你当前的写法不符合语法要求。 - 隐藏问题1:代码中未声明
userChoice变量的类型,你在输入时直接使用了该变量,需要先补充int userChoice;的定义。 - 隐藏问题2:switch的判断参数是
menuChoice枚举类型,case分支使用数字字面量虽然可以运行,但不符合枚举的使用规范,建议替换为你定义的枚举常量,提升代码可读性。
修复后的代码示例
enum menuChoice {ADD = 1, REMOVE = 2, DISPLAY = 3, SEARCH = 4, RESULTS = 5, QUIT = 6};
menuChoice switchChoice; Student student; int userChoice; // 补充userChoice的定义 cout << "1. Add\n" << "2. Remove\n" << "3. Display\n" << "4. Search\n"; cout << "5. Results\n" << "6. Quit" << endl; for (int i = 0; i < 999; ++i) { cout << "Please enter choice:"; cin >> userChoice; if (userChoice > 6 || userChoice < 1) { cout << "Incorrect choice. Please enter again" << endl; } else { break; } } switchChoice = static_cast<menuChoice>(userChoice); switch(switchChoice){ case ADD: // 替换为枚举常量 add_Student(student); break; case REMOVE: break; case DISPLAY: break; case SEARCH: break; case RESULTS: break; case QUIT: break; default: ; // 补充空语句,符合语法要求 }
如果你不需要default分支的逻辑,也可以直接删除default:这一行,就不需要补充空语句了。
内容的提问来源于stack exchange,提问作者Nate King
相关产品推荐
相关产品推荐

