C++:从类内、类外应用枚举

C++: Applying Enums from inside a class, outside the class

本文关键字:应用 枚举 C++      更新时间:2023-10-16
class Stepper {
    public:
    enum microstepping {
        FULL,
        HALF,
        QUARTER
    };
    int stepsPerStep;
    Stepper(microstepping _microstepping) {
        switch(_microstepping){
        case FULL:
            stepsPerStep = 1;
            break;
        case HALF:
            stepsPerStep = 2;
            break;
        case QUARTER:
            stepsPerStep = 4;
            break;
        }
    }
};
void main() {
    Stepper stepperA(FULL);//Problem shows here
}

/*我正在尝试使用枚举在类的特定实例中设置内部可变量。问题是当我尝试使用它时,枚举在类外无法识别。在类外部声明枚举不是一种选择。*/

你需要用Stepper范围限定它 -

class Stepper {
    public:
    enum microstepping {
        FULL,
        HALF,
        QUARTER
    };
    int stepsPerStep;
    Stepper(microstepping _microstepping) {
        switch(_microstepping){
        case FULL:
            stepsPerStep = 1;
            break;
        case HALF:
            stepsPerStep = 2;
            break;
        case QUARTER:
            stepsPerStep = 4;
            break;
        }
    }
};
int main() {
    Stepper stepperA(Stepper::FULL);
}

并在可能的情况下使用enum class -

class Stepper {
    public:
    enum class microstepping {
        FULL,
        HALF,
        QUARTER
    };
    int stepsPerStep;
    Stepper(microstepping _microstepping) {
        switch(_microstepping){
        case microstepping::FULL:
            stepsPerStep = 1;
            break;
        case microstepping::HALF:
            stepsPerStep = 2;
            break;
        case microstepping::QUARTER:
            stepsPerStep = 4;
            break;
        }
    }
};
int main() {
    Stepper stepperA(Stepper::microstepping::FULL);
}