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

标签 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

}

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

最佳答案

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

关于C++:在类内、类外应用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137670/

相关文章:

c# - 非典型系统中的命名空间和类命名最佳实践

c# - 定义枚举结构时出错。

c++ - 如何实现从枚举值到类模板的隐式转换

c++ - 同一模式多次出现的 Horspool 算法

C++ 模板构造函数默认参数

c++ - 将 2D 数组传递给函数/构造函数

java - 我可以将类包含在与主类相同的源代码中吗?

python - 有什么理由给 self 一个默认值吗?

java - 参数化枚举传入另一个枚举

c++ - 在多个源文件中访问相同的类实例