错误:切换数量不是整数
我已经在StackOverflow和多谷歌链接上研究了我的问题,我仍然感到困惑。我认为对我来说最好的事情就是问...
我创建一个简单的命令行计算器。到目前为止,这是我的代码:
const std::string Calculator::SIN("sin");
const std::string Calculator::COS("cos");
const std::string Calculator::TAN("tan");
const std::string Calculator::LOG( "log" );
const std::string Calculator::LOG10( "log10" );
void Calculator::set_command( std::string cmd ) {
for(unsigned i = 0; i < cmd.length(); i++)
{
cmd[i] = tolower(cmd[i]);
}
command = cmd;
}
bool Calculator::is_legal_command() const {
switch(command)
{
case TAN:
case SIN:
case COS:
case LOG:
case LOG10:
return true;
break;
default:
return false;
break;
}
}
我得到的错误是:
Calculator.cpp: In member function 'bool Calculator::is_trig_command() const':
Calculator.cpp: error: switch quantity not an integer
Calculator.cpp: error: 'Calculator::TAN' cannot appear in a constant-expression
Calculator.cpp: error: 'Calculator::SIN' cannot appear in a constant-expression
Calculator.cpp: error: 'Calculator::COS' cannot appear in a constant-expression
强大的互联网,它表示允许在switch语句中使用字符串。
谢谢大家,感谢您的帮助。
没有找到相关结果
已邀请:
7 个回复
缮淳彼誊
中,表达式必须是“整数类型或类型类型,其中有明确的转换为整数类型”(引用VS2008文档)。 字符串类没有“明确转换为整数类型”,就像
一样。 作为一种解决方法: 创建一个
并打开地图的值:
` 做一套
/
而不是开关。更烦人,更难读,所以我推荐地图路线。 顺便说一下,对于真正复杂的逻辑来说,更好的解决方案就是改进映射解决方案以完全摆脱
,而不是使用函数查找:
。对于您的特定情况可能不需要它,但对于复杂的非常长的查找逻辑来说,速度要快得多。
告耸
。我会用
我不认为这更复杂,而且它的速度和它一样快。您也可以使用我的开关宏,使其看起来像
(在
之后
是死代码,所以应该避免)。
断跑胺弄萎
/
,像这样:
弦砂牧扁
骨乏唯瓜
语句中使用字符串。 (不过,C#确实如此。) 您需要将
语句转换为测试相等性的
-
-
语句链。
桔马牛
臀夯脖锑