将枚举值用作参数时,为什么我的枚举值“未定义”?

时间:2021-02-07 04:39:48

标签: c++ enums

我的问题的简化模型如下。我想要做的就是在 main() 中使用 degreeChecker() 函数。 degreeChecker() 函数采用枚举“DegreeProgram”作为其类型。此枚举在其自己的类中定义,后续类继承该类。但问题是 main() 中的函数一直将任何枚举参数视为“未定义”。为什么会发生这种情况,我该如何解决?

#include <iostream>
using namespace std;

class Degree {
public:
    enum DegreeProgram { SECURITY, NETWORK, SOFTWARE };

};

class UseEnum : Degree {
public:
    bool DegreeChecker(DegreeProgram degreeProgram);
};

bool UseEnum::DegreeChecker(DegreeProgram degreeProgram) {

    if (degreeProgram == SOFTWARE) {
        return true;
    }

}



int main()
{
    UseEnum NewDegree;

    NewDegree.DegreeChecker(SOFTWARE); **//error: identifier "SOFTWARE" is undefined -- why?** 
    
    return 0;
}

2 个答案:

答案 0 :(得分:3)

符号的作用域是 Degree 类,因此您需要指定它才能使用它:

NewDegree.DegreeChecker(Degree::SOFTWARE);

答案 1 :(得分:3)

枚举是 Degree 类的成员,因此需要对其进行限定。

试试

NewDegree.DegreeChecker(Degree::SOFTWARE);
相关问题