C++ 为什么我的枚举值在用作参数时“未定义”?

C++ 为什么我的枚举值在用作参数时“未定义”?,c++,enums,C++,Enums,下面是我问题的简化模型。我所要做的就是在main中使用DegreeChecker函数。DegreeChecker函数将枚举“DegreeProgram”作为其类型。此枚举在其自己的类中定义,后续类继承该类。但问题是main中的函数一直将任何枚举参数视为未定义的。为什么会发生这种情况?我如何解决 #include <iostream> using namespace std; class Degree { public: enum DegreeProgram { SECURI

下面是我问题的简化模型。我所要做的就是在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;
}

符号的作用域为Degree类,因此您需要指定以下内容才能使用它:

DegreeCheckerDegree::软件;
符号的作用域为Degree类,因此您需要指定以下内容才能使用它:

DegreeCheckerDegree::软件;
枚举是Degree类的成员,因此需要对其进行限定

试一试


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

试一试


软件确实是未定义的。你可能是指学位:SOFTWARE@IgorTandetnik嗯,那当然行。根据我的任务说明,我的印象是,参数必须仅取枚举值,但公平地说,我不会把它放在我的说明后面,因为它太不清楚了。软件确实是未定义的。你可能是指学位:SOFTWARE@IgorTandetnik嗯,那当然行。根据我的任务说明,我的印象是,参数必须仅取枚举值,但公平地说,我不会把它放在我的说明后面,让它变得如此不清楚。
NewDegree.DegreeChecker(Degree::SOFTWARE);