C ++在枚举中有数组值吗?

时间:2016-06-09 15:03:09

标签: c++ arrays enums

我想知道枚举中是否有可能有数组值?实施例

    enum RGB {
      RED[3],
      BLUE[3]

    } color;

这样RED可以包含(255,0,0)的值,因为这是红色的RGB颜色代码。

4 个答案:

答案 0 :(得分:3)

不,你不能用枚举来做到这一点。它看起来很像你想要一个类/结构:

class Color {
public:
    int red;
    int green;
    int blue;

    Color(int r, int g, int b) : red(r), green(g), blue(b) { }
};

一旦定义了该类,就可以将其放入容器(例如数组,向量)并查找它们。例如,您可以使用枚举来引用数组中的元素。

enum PresetColor {
    PRESET_COLOR_RED,
    PRESET_COLOR_GREEN,
    PRESET_COLOR_BLUE,
};

...
Color presetColors[] = { Color(255, 0, 0), Color(0, 255, 0), Color(0, 0, 255) };

Color favouriteColor = presetColors[PRESET_COLOR_GREEN];

考虑到这一点,你可以将所有这些包装起来以使其更易于维护,但我会说这不属于这个问题的范围。

答案 1 :(得分:3)

你做不到。 struct Color {uint8_t r; uint8_t g; uint8_t b;}; Color const RED = {255, 0, 0}; Color const GREEN = {0, 255, 0}; Color const BLUE = {0, 0, 255}; 中的标记只能保存整数值。

可能的解决方案:

{{1}}

答案 2 :(得分:1)

长话短说:不,这是不可能的。

答案 3 :(得分:0)

不,枚举的定义只允许它们保存整数值。