此问题已在此处有答案:
How to initialize a static const member in C++?(5个答案)
4天前关闭。
我有一个类,它的静态常量成员与类的类型相同。我得到一个错误,类尚未完成。
#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;
}
或者我可以让它们成为非常量,但这样容易出错,因为它可以被改变。如果我把它们设为const,那么它们必须在声明的地方定义。
我想在这种情况下,需要静态构造函数。
2条答案
按热度按时间bvpmtnay1#
你可以使用“工厂”静态方法。这很好地推广到了更复杂的用例,并且还有一个额外的好处,那就是可以在常量表达式中使用
White
:xxb16uws2#
在类外部定义变量: