我收到错误"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
,它将无法编译,并且会给我上述错误。我怎样才能解决这个问题? 最佳答案
开关语句中的case
标签需要在编译时已知的常量。 someValue
必须与constexpr
顺序相同;或一些prvalue
常数;或enum
或enum class
。如果必须使用运行时条件,请使用if-else阶梯。
ClassName::someMethod(){
int command = getCommandNumber();
if(command == someValue)
doSomeStuff();
else if(command == ...)
....
}
}
关于c++ - 在类的方法之一中的switch语句中使用在类中声明的int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42078378/