在类的一个方法中的switch语句中使用类声明的int

时间:2017-02-06 22:23:53

标签: c++ visual-studio

我收到错误"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,它将无法编译,它会给我上面提到的错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

switch-statement 中的case 标签需要在编译时已知的常量。 someValue必须与constexpr具有相同的顺序;或一些prvalue常数;或enumenum class。如果必须使用运行时条件,请使用 if-else 梯形图。

ClassName::someMethod(){
   int command = getCommandNumber();
        if(command == someValue)
            doSomeStuff();
        else if(command == ...)
            ....
   }
}