类里面不能有自己类型的常量?

skl*_*ott 6 c++ incomplete-type constexpr

我的意思是,有可能以某种方式做这样的事情吗?

class Color {
public:
    static constexpr Color BLACK = {0, 0, 0};

    constexpr Color(int r, int g, int b) : r_(r), g_(g), b_(b) {}

private:
    int r_;
    int g_;
    int b_;
};

Run Code Online (Sandbox Code Playgroud)

编译器Color在定义BLACK常量时抱怨类不完整。

Jar*_*d42 11

您可以将定义移到外面:

class Color {
public:
    static const Color BLACK;

    constexpr Color(int r, int g, int b) : r_(r), g_(g), b_(b) {}

private:
    int r_;
    int g_;
    int b_;
};
constexpr Color Color::BLACK = {0, 0, 0};
Run Code Online (Sandbox Code Playgroud)

演示