列挙型クラスのランダム要素で変数を埋めたい。
そこで、enumクラスタイプをintに設定し、最後のenumをenumクラスからrandに渡してみました。
enum class Enumerator: int
{
en1=0,
en2,
en3,
ensCount
};
int main()
{
srand(time(NULL));
auto a=static_cast<Enumerator>(rand()%Enumerator::ensCount);
return 0;
}
結果は「«operator%»に一致しません(オペランドタイプは«int»と«Enumerator»)」エラーです。
組み込みのモジュロ(%
)演算子のオペランドは、整数型またはスコープなしの列挙型である必要があります。
Enumerator
あるスコープの列挙。
スコープ付き列挙子の値から整数型への暗黙の変換はありません。
したがって、を使用static_cast
して列挙子の数値を取得する必要があります。
int divisor = static_cast<int>(Enumerator::ensCount);
srand(time(NULL));
auto a = static_cast<Enumerator>(rand() % divisor);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加