如何初始化类中的静态常量对象并使用它

How can I initialize a static const object in a class and use it?

本文关键字:对象 常量 静态 初始化      更新时间:2023-10-16

所以我有

// MyClass.h
class MyClass
{
private:
    static const Color::Color myColor
public:
    void SomeMethod();
}
// MyClass.cpp
const Color MyClass::myColor = Color::Color::Blue;
// or
const Color MyClass::myColor(Color::Color::Blue);
void MyClass::SomeMethod()
{
    Color c = this->myColor;
    Color c1 = Color::Color::Blue;
}

在本例中,未设置Color c变量。但CCD_ 2设置成功。

通常,我建议提供一个完全可编译的示例来显示您的问题。下面我已经包含了看起来像您的测试用例的内容,它按预期工作。

#include <cassert>
enum class Color {
    Red = 1,
    Blue = 2
};
class MyClass {
    private:
        static const Color myColor;
    public:
        void SomeMethod();
};
const Color MyClass::myColor = Color::Blue;
void MyClass::SomeMethod()
{
    Color c = this->myColor;
    Color c1 = Color::Blue;
    assert(c == Color::Blue);
    assert(c1 == Color::Blue);
}
int main() {
    MyClass x;
    x.SomeMethod();
}

尝试

    class MyClass
{
private:
    static const Color::Color myColor = Color::Color::Blue;
public:
    void SomeMethod();
};