如何从枚举 class 中获取随机值?
How to pick up a random value from an enum class?
你好,
最近接触了 C++(准确地说是 C++14),我正在尝试使用枚举,但在解决问题时仍然遇到了一些麻烦
目前,试图从这样构造的枚举 class 中获取随机值:
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++(准确地说是 C++14),我正在尝试使用枚举,但在解决问题时仍然遇到了一些麻烦
目前,试图从这样构造的枚举 class 中获取随机值:
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 std::array niveau_vals = {
#define NIVEAU_DEF(NOM,VALEUR) Niveau::VALEUR,
#include "niveau.def"
#undef NIVEAU_DEF
};