我收到错误"this cannot be used in a constant expression."
我要做的事情应该是一项非常简单的任务。我想要做的就是在类中的方法内的switch语句中使用类中声明的变量。例如:
在课堂上
private:
int someValue;
在类构造函数中
Classname::ClassName(){
someValue = 1;
}
方法
ClassName::someMethod(){
int command = getCommandNumber();
switch (command){
case someValue:
doSomeStuff();
break;
}
}
在方法中,如果我用someValue
替换1
,一切正常;但是,如果我使用someValue
,它将无法编译,它会给我上面提到的错误。我该如何解决这个问题?
答案 0 :(得分:4)
switch-statement 中的case
标签需要在编译时已知的常量。 someValue
必须与constexpr
具有相同的顺序;或一些prvalue
常数;或enum
或enum class
。如果必须使用运行时条件,请使用 if-else 梯形图。
ClassName::someMethod(){
int command = getCommandNumber();
if(command == someValue)
doSomeStuff();
else if(command == ...)
....
}
}