使用RBGA值填充枚举

时间:2016-01-09 18:11:27

标签: c++ enums

我想用RBGA值填充我的枚举。例如:

enum Colors
{
    COLOR_BLACK,
    COLOR_WHITE,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_DARKBLUE,
};

Colors[COLOR_BLACK] = CColor(0.0f, 0.0f, 0.0f, 1.0f);

我的问题是:我必须以哪种方式声明CColor能够用4个花车填充我的枚举?

1 个答案:

答案 0 :(得分:3)

您需要一个CColor数组来执行此操作:

struct CColor
{
    CColor( float r, float g, float b, float a )
        : red(r), green(g), blue(b), alpha(a) {}
    float red, green, blue, alpha;
};

enum Colors
{
    COLOR_BLACK,
    COLOR_WHITE,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_DARKBLUE,
};

CColor mycolors[] = {
    CColor(0.0f, 0.0f, 0.0f, 1.0f), // COLOR_BLACK
    CColor(1.0f, 1.0f, 1.0f, 1.0f), // COLOR_WHITE
    CColor(1.0f, 0.0f, 0.0f, 1.0f), // COLOR_RED
    CColor(0.0f, 1.0f, 0.0f, 1.0f), // COLOR_GREEN
    CColor(0.0f, 0.0f, 1.0f, 1.0f)  // COLOR_DARKBLUE
};

CColor GetColor( Colors col ) { return mycolors[col]; }

CColor red = GetColor(COLOR_RED);

这是有效的,因为枚举具有递增的数字,从0开始。