c++ - C++ 中的 case 表达式返回错误

标签 c++ constants

我将这段代码用作二维游戏的一部分,但是当我尝试编译它时,它返回了以下错误:

error C2051: case expression not constant.

This is my code:

switch(_getch()){
  case "w":
    dir = UP;
    break;
  case "a":
    dir = LEFT;
    break;
  case "s":
    dir = DOWN;
    break;
  case "d":
    dir = RIGHT;
    break;
  default:
    break;
}

最佳答案

在 switch cases 中,你应该使用字 rune 字 ('w') 而不是字符串文字 ("w"):

case 'w':
    dir = UP;
    break;

"w" 是一个字符串文字,它会衰减为一个 char const* 指针。 switch case 只能是常量整数、枚举或具有单个非显式整数或枚举转换运算符的类。指向 char 的指针不是这些。

关于c++ - C++ 中的 case 表达式返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935652/

相关文章:

c++ - 如何在同一个 while 循环中评估大于和小于的数字?

c++ - 是否允许 std::vector::size() 要求非平凡的计算?什么时候有意义?

javascript - 为什么 for..of/for..in 循环可以使用 const 而普通的 for 循环在 JS 中只能使用 let 或 var 作为其变量?

java - MongoDB Java 驱动程序中的更新运算符常量在哪里?

c++ - 刷新 boost::iostreams::zlib_compressor。如何获得 "sync flush"?

c++ - 使用 Xcode 13 在 iOS 15 上编译 Cronet 时,shrink_to_fit() 的 "Undefined symbols"

c++ - 使用应用程序类有什么好处?

c++ - 如何在 C++ 中通过命令行参数传递常量 int?

c - 关于 const 指针的快速说明

constants - 在 Graphite 中,当数据高于某个常量时,如何将数据限制为常量?