繁体   English   中英

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

[英]C++ Have array values in an enum?

我想知道是否有可能在枚举中有一个数组值?

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

    } color;

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

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

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];

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

你不能这样做。 enum的标记只能保存整数值。

可能的解决方案:

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};

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM