【发布时间】:2021-08-03 02:59:28
【问题描述】:
我已经找到了这个非常好的解释Initialising enum via constructors,但它不符合我的需要。
所以我在类中声明了一个枚举,并希望在类构造函数中对其进行初始化,然后通过方法中的 switch 语句调用此枚举,但我无法实现它。 这是一个代码:
class myClass {
myClass();
enum class State;
void update();
};
// initialise State() with default value, so state1=0, state2=1
myClass::myClass() : State() {}
enum class
myClass::State
{
state1,
state2
} enumState;
void myClass::update(){
switch (enumState){
case enumState.state1:
break;
case enumState.state2:
break;
}
}
但显然这不是正确的实现方式。
我收到以下错误:
错误:‘enum class myClass::State’不是‘myClass’的非静态数据成员
错误:在‘enumState’中请求成员‘state1’,它是非类类型‘myClass::State’
谁能解释我如何实现这样的代码,如果我想用默认参数初始化 State 怎么办?
谢谢!
【问题讨论】:
-
你不能初始化一个类型,它是一个编译时构造。你想要做的正是suggested answer does - 定义一个成员变量并在构造函数中初始化该object。请创建一个minimal reproducible example,这是一个分散的声明和定义的混合体。例如。
enumState是一个全局变量。
标签: c++ c++11 enums switch-statement enum-class