如何从映射中获取值并在 C++ 的 switch 语句中使用它
How to get value from map and use it inside switch statement in C++?
我已经声明了一个映射,它将枚举值存储为键,将无符号 int 存储为值。我想将此值用作 switch 语句中案例的数值。问题是指定大小写的数字必须是 const 值。方法 "at((" 返回一个 const ref,因此不能在那里使用它。这是我的代码:
enum KEYS { UP_ARROW, RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, ENTER, SPACE };
std::map<KEYS, unsigned int> steerage;
...
switch(input){
case steerage.at(KEYS::UP_ARROW): // does not compile
...
break;
...
}
问题是 case 语句需要一个编译时常量。在这里,您尝试使用运行时值,即存储在映射中的值。这就是您收到编译器错误的原因。
相关文章:
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 如何将 if else 语句重写为 switch 语句
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- Switch 语句(字符串)一直选择默认值,除非其为零
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 为什么在 C/C++ 中交织 switch/for/if 语句是有效的?
- 默认标签显然在 switch 语句中不起作用
- C++如何在 switch 语句中放置两个参数
- 如何在 c++ 中从 switch 语句返回不同类型的变量
- switch-case语句如何在Arduino/C++中工作
- 在编译时自动生成用于稀疏数组索引的switch语句
- 代码样式:在 switch/if 语句的分支中重用控件表达式或控制变量
- C++ Switch 语句中的数学运算
- 变量不能在 lambda 中隐式捕获,并且没有使用 switch 语句指定捕获默认值
- 在任何案例之前,在 switch 语句中的使用声明是否合法?
- 有没有办法缩短长 switch() 语句?
- 使用 switch 语句将不同的函数作为类属性分配 C++
- 为什么我的 switch 语句没有响应一半的情况?
- 没有if或if相关语句(switch、while、for、?:等)的可视化c++递归