我想用枚举类中的随机元素填充变量。
因此,我尝试将枚举类类型设置为int并将最后一个枚举从枚举类传递给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»)”。
答案 0 :(得分:2)
内置模(%
)运算符的操作数应为整数或 unscoped 枚举类型。
Enumerator
是scoped enumeration。
没有从范围内的枚举数的值到整数类型的隐式转换。
因此,您必须使用static_cast
来获取枚举器的数值。
int divisor = static_cast<int>(Enumerator::ensCount);
srand(time(NULL));
auto a = static_cast<Enumerator>(rand() % divisor);