你好,
最近進入 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)
是否可以使用一種方法隨機選擇其中一個列舉?還是這種構造列舉的方式不允許?
uj5u.com熱心網友回復:
由于您已經有一個 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
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484069.html
