如何在类中创建不可变的静态公共对象?

时间:2013-01-18 20:32:46

标签: c++

我有一个Color类,它包含颜色的红色,绿色,蓝色和alpha通道的值。类构造函数允许您通过指定四个通道的值来创建新颜色。但是,为方便起见,我还想为程序员提供一些“预制”颜色。例如,而不是像

那样

DrawBox(new Color(255, 0, 0));

你可以说

DrawRectangle(Color::Red);

其中Color.Red是Color类中的Color实例。如何在Color类中声明这些Color实例?我确定这个技术有一个名字,但我不知道在网上寻求帮助时使用哪些搜索术语。

我没有使用任何内置或公开可用的类或库,因为这是创建基本图形堆栈的个人练习的一部分。

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

首先,避免使用new。您可以使用Color作为简单的值类型。

现在作为你问题的答案,是的,你可以这样做:

//color.h

typedef unsigned char byte;

class Color
{
    public:
        //declaration
        const static Color Red;
        const static Color Green;
        const static Color Blue;
    public:

       Color(byte red, byte green, byte blue);
};

//define the static members in color.cpp file
#include "color.h"

const Color Color::Red(255,0,0);
const Color Color::Green(0,255,0);
const Color Color::Blue(0,0,255);

然后根据您的意愿使用Color::Red