c++ - 如何使用默认值将值分配给构造函数中的枚举?

标签 c++ enums constructor

我在C++中有一个 protected 枚举类型的类,并且在使用用户定义的参数在构造函数中初始化该值时遇到麻烦,该参数也具有默认值。

码:

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),我收到了编译器错误:

错误( Activity )E0292“gradeStatus”不是静态数据成员或类“Student”的基类

如果要创建的blank对象没有提供Student值,我希望emum具有默认值gradeStatus,并且如果这样做,那么我想使用用户提供的参数初始化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
  {}
}; 

关于c++ - 如何使用默认值将值分配给构造函数中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62371507/

相关文章:

C++基本字符串输入输出

c++ - 以简单的方式处理异常语法问题

design-patterns - 枚举 vs 查找表 vs 枚举反射 vs 状态模式

Python在成员函数中调用构造函数

c++ - 根据入参值调用不同的基类构造函数

c++ - 使用 fstream 对象在 C++ 中模拟分页文件系统

c++ - 我是否需要释放由 _Type::get_FullName 填充的 BSTR

Swift switch 语句考虑了 Int 的所有情况,但编译器仍然显示错误

enums - 如何在模式匹配中忽略类结构枚举变体的成员?

c++ - 为什么复制构造函数应该在 C++ 中通过引用来接受它的参数?