如何初始化与类具有相同类型的类的静态常量成员?

问题描述 投票:0回答:1

我有一个类,其静态常量成员与该类具有相同的类型。我收到错误消息,表明课程尚未完成。

#include<iostream>

class Color
{
public:
    Color(unsigned char _red, unsigned char _green, unsigned char _blue)
    : red(_red), green(_green), blue(_blue)
    {
    }
    
    Color(){}
    
    unsigned char red, green, blue;
    
    static const inline Color White{255, 255, 255};
};

int main()
{
    std::cout << Color::White.red;
}   

我可以将它们设置为非常量,但这样很容易出错,因为这样就可以更改。如果我将它们设置为常量,那么它们必须在声明所在的位置定义。

我想对于这种情况需要静态构造函数。

c++ constants c++14 static-constructor
1个回答
0
投票

在类外定义变量:

class Color
{
    // ...
    static const Color White;
};

const Color Color::White{255, 255, 255};
© www.soinside.com 2019 - 2024. All rights reserved.