如何从映射中获取值并在 C++ 的 switch 语句中使用它

How to get value from map and use it inside switch statement in C++?

本文关键字:语句 switch C++ 映射 获取      更新时间:2023-10-16

我已经声明了一个映射,它将枚举值存储为键,将无符号 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 语句需要一个编译时常量。在这里,您尝试使用运行时值,即存储在映射中的值。这就是您收到编译器错误的原因。