如何使用默认值为构造函数中的枚举赋值?
How do I assign a value to an enum in constructor with a default value?
我有一个C++类,具有受保护的枚举类型,我在使用用户定义的参数在构造函数中初始化该值时遇到问题,其中它也具有默认值。
法典:
class Student
{
protected:
double gpa;
enum gradeStatus {freshman, sophomore, junior, senior, blank};
public:
Student(double inGPA = 0.0, gradeStatus inGrade = blank)
:
gpa(inGPA),
gradeStatus(inGrade) //problem here
{}
};
由于语句gradeStatus(inGrade)
,我收到编译器错误:
错误(活动(E0292"gradeStatus"不是类"学生"的非静态数据成员或基类
我希望 emum 的默认值为blank
,如果在没有提供gradeStatus
值的情况下创建Student
对象,如果他们这样做,那么我想使用用户提供的参数启动Student
对象。
任何关于我如何做到这一点的帮助表示赞赏。
>gradeStatus
是枚举类型的名称,但不是数据成员的名称。错误消息试图告诉您应该初始化数据成员,而不是枚举类型。
你可能想要
class Student
{
protected:
double gpa;
enum gradeStatus {freshman, sophomore, junior, senior, blank}; // enum type definition
gradeStatus status; // data member definition
public:
Student(double inGPA = 0.0, gradeStatus inGrade = blank)
:
gpa(inGPA),
status(inGrade) // initialize the data member
{}
};
gradeStatus(inGrade)
此行尝试将 inGrade 分配给 gradeStatus。"gradeStatus"是一个枚举类型,而不是类的成员。要解决此问题,请向类中添加成员,例如:
gradeStatus status;
然后将有问题的行更改为:
status(inGrade)
相关文章:
- 为什么 int 类型的枚举类值不能用作 int
- 如何使用默认值为构造函数中的枚举赋值?
- 使用 Doxygen 记录枚举类值,而不启用EXTRACT_ALL
- 在结构中使用枚举的值
- 在运行时使用枚举器值作为模板函数的模板参数的元程序
- 如何从枚举类值中指定模板函数参数中的数组大小?
- 为什么isocpp允许我们超过枚举类值
- 比较枚举的值会给出编译器错误
- C++枚举索引值
- 比较枚举类值时的奇怪行为
- 使用对其他枚举值的操作定义枚举元素值
- 从枚举类值模板参数推断枚举类类型
- 如何将枚举返回值转换为C 异常
- C MFC中非命中枚举的值
- 为什么可以获取此枚举成员值,而不必先深入研究嵌套枚举
- 在C++中显示、更新和验证枚举的值
- switch()中未处理的枚举类值-异常或断言
- 禁用if语句中的枚举赋值g++
- 正在为枚举赋值
- 通过numeric_limits为枚举赋最大值