如何使用默认值为构造函数中的枚举赋值?

How do I assign a value to an enum in constructor with a default value?

本文关键字:枚举 赋值 构造函数 何使用 默认值      更新时间:2023-10-16

我有一个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)