如何解决使用构造函数初始化枚举
我已经找到了这个非常好的解释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 该怎么办?
谢谢!
解决方法
在您的类中,您需要包含一个 State
类型的变量:
class myClass {
myClass();
enum class State;
// create a class member variable of type State named enumState;
State enumState;
void update();
};
然后在构造函数内部,您可以初始化新的 enumState
变量而不是 State
枚举类型。
要解决您看到的第二个错误,您需要使用 update()
方法:
void myClass::update(){
switch (enumState){
case State::state1:
break;
case State::state2:
break;
}
}
这是由于访问枚举值的方式(使用 Enum::value
而不是 enum.value
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。