编译以下代码并得到错误type illegal.
int main()
{
// Compilation error - switch expression of type illegal
switch(std::string("raj"))
{
case"sda":
}
}
Run Code Online (Sandbox Code Playgroud)
你不能在任何一个switch或中使用字符串case.为什么?是否有任何解决方案可以很好地支持类似于切换字符串的逻辑?
我知道STL有一个HashMap API,但我找不到任何好的和全面的文档,并提供了很好的例子.
任何好的例子将不胜感激.
在C switch-case流控件中,需要在该块中定义if变量之后放置花括号{}case.
case无论变量声明如何,在每次之后放置大括号是不好的做法吗?
例如:
switch(i) {
case 1: {
int j = 4;
...code...
} break;
case 2: { //No variable being declared! Brace OK?
...code...
} break;
}
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
bool Character::keyPress(char c)
{
switch(c)
{
case up_key:
move(0, -1);
break;
case down_key:
move(0, 1);
break;
case left_key:
move(-1, 0);
break;
case right_key:
move(1,0);
break;
default:
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
并且编译器抱怨:
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
Run Code Online (Sandbox Code Playgroud)
在我的头文件中,我有:
protected:
char up_key;
char down_key;
char right_key;
char left_key;
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual C++ 2008.