如何从枚举类中获取随机值



你好,

最近刚开始学习C++(准确地说是C++14),我正在尝试使用枚举,但在弄清楚问题时仍然有点困难
目前,我正试图从这样构造的枚举类中获得一个随机值:

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

这里是";niveu.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
};

最新更新