你好,
最近接触了 C++(准确地说是 C++14),我试图用枚举来解决问题,
目前,尝试从构造的枚举类中获取随机值像这样:
enum class Niveau {
#define NIVEAU_DEF(NOM,VALEUR) NOM = VALEUR,
#include "niveau.def"
#undef NIVEAU_DEF
};
Run Code Online (Sandbox Code Playgroud)
这是“niveau.def”的内容
NIVEAU_DEF(I, 1)
NIVEAU_DEF(II, 2)
...
NIVEAU_DEF(IX, 9)
NIVEAU_DEF(X, 10)
Run Code Online (Sandbox Code Playgroud)
是否可以使用一种方法从这些枚举中随机选取一个?或者这种构造枚举的方式不允许吗?
小智 5
由于您已经有了 XMacro,因此您可以重用它来创建值数组并从中进行选择:
const Niveau niveau_vals[] = {
#define NIVEAU_DEF(NOM,VALEUR) Niveau::VALEUR,
#include "niveau.def"
#undef NIVEAU_DEF
};
Run Code Online (Sandbox Code Playgroud)
在该语言的较新版本中,您可以使用 使其成为一个很好的 constexpr std::array。
constexpr std::array niveau_vals = {
#define NIVEAU_DEF(NOM,VALEUR) Niveau::VALEUR,
#include "niveau.def"
#undef NIVEAU_DEF
};
Run Code Online (Sandbox Code Playgroud)