c++ - 如何从枚举类中获取随机值?

标签 c++ random enums

你好,

最近接触了 C++(准确地说是 C++14),我正在尝试使用枚举,但在解决问题时仍然遇到了一些麻烦
目前,试图从这样构造的枚举类中获取随机值:

enum class Niveau {
  #define NIVEAU_DEF(NOM,VALEUR) NOM = VALEUR,
  #include "niveau.def"
  #undef NIVEAU_DEF
};

这里是“niveau.def”的内容

NIVEAU_DEF(I, 1)
NIVEAU_DEF(II, 2)
...
NIVEAU_DEF(IX, 9)
NIVEAU_DEF(X, 10)

是否可以使用一种方法从这些枚举中随机选取一个?或者这种构造枚举的方式不允许吗?

最佳答案

因为您已经有了一个 XMacro,您可以重用它来创建一个值数组并从中选择:

const Niveau niveau_vals[] = {
  #define NIVEAU_DEF(NOM,VALEUR) Niveau::VALEUR,
  #include "niveau.def"
  #undef NIVEAU_DEF
};

在较新版本的语言中,您可以使用 std::array 使其成为一个很好的 constexpr。

constexpr std::array niveau_vals = {
  #define NIVEAU_DEF(NOM,VALEUR) Niveau::VALEUR,
  #include "niveau.def"
  #undef NIVEAU_DEF
};

关于c++ - 如何从枚举类中获取随机值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72449160/

相关文章:

javascript - javascript中变量名后面的*是什么

python - 设置 random.seed() 以重新创建模拟行为和选择种子的影响

javascript - redux(?) 请求的 $$typeof 属性缺失

Android 在枚举中使用 Drawable

c++ - 在 MSVC 中有诸如 MFC 自定义控件(设计时)之类的东西,是否有诸如 win32 自定义控件之类的东西?

C++比较两个对象

Java 随机实用程序生成过多的 0 和静态数字

c++ - 从头开始实现经典 OPC DA 服务器

c++ - 这种类型的内存是在堆上还是在栈上分配的?

swift - 基于 swift 2 中的另一个枚举创建一个枚举