我收到错误"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常数;或enumenum 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/

10-10 21:38