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

标签 c++ constexpr incomplete-type

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

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_;
};

编译器提示类 Color定义时不完整 BLACK持续的。

最佳答案

您可以将定义移到外面:

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};
Demo

关于c++ - 类里面不能有自己类型的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68315363/

相关文章:

c# - 如何在 C# 中声明编译时常量函数

c++ - 为什么内联声明不是不完整的类型?

c++ 只有第一个答案行正确

c++ - 将 Boost::Beast 用于 CPU 密集型 REST API,我应该使用异步还是同步方式来实现它们以获得更好的延迟?

c++ - 计算平均值时溢出?

C++ private static constexpr 成员变量

c++ - 指针错误导致的段错误(简单...)

c++ - 我可以用 constexpr 函数声明一个静态数组吗

c++ - 不完整类型的 std::unique_ptr 无法编译

c - C 中的参数类型不完整