我正在尝试执行以下操作:
switch(moveDirection){
case MOVE_DIRECTION_UP:
//do something
break;
}
MOVE_DIRECTION_UP 在哪里:
const unsigned char MOVE_DIRECTION_UP = 0x0;
编译器报错:MOVE_DIRECTION_UP cannot appear in constant-expression
当然应该允许这样做,因为如果我将 MOVE_DIRECTION_UP 替换为 0x0,它可以正常编译。
感谢任何帮助,谢谢!
最佳答案
如果您使用的是 C++11,则可以将 MOVE_DIRECTION_UP
声明为 constexpr
。编译器会将其视为一个常量值,可以作为开关标签使用。
如果你不是,你可以定义一个枚举:
namespace eDirection { enum e {
UP = 0x0,
DOWN = 0x1
};}
switch( direction ) {
case eDirection::UP: ...
};
关于C++ 开关 : case <some constant> - is this allowed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659323/