我想用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个花车填充我的枚举?
答案 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
开始。