C ++:在类外部的类中应用枚举

时间:2018-01-07 13:38:33

标签: c++ class enums arduino-ide

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

}

/ * 我试图使用枚举在类的特定实例中设置内部可变。问题是当我尝试使用它时,枚举不会在课堂外被识别。在课堂外宣布枚举不是一种选择。 * /

1 个答案:

答案 0 :(得分:2)

您需要使用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);
}