我在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”不是静态数据成员或类“ Student”的基类
我希望emum具有默认值,blank
如果Student
创建该对象时不提供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
{}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句