C++ 有没有办法从c++;?

C++ 有没有办法从c++;?,c++,c++11,random,enum-class,C++,C++11,Random,Enum Class,我想用枚举类中的随机元素填充一个变量 所以我尝试将枚举类类型设置为int,并将最后一个枚举从枚举类传递到rand: enum类枚举器:int { en1=0, en2, en3, 恩斯库 }; int main() { srand(时间(空)); 自动a=静态_转换(rand()%Enumerator::ensCount); 返回0; } 结果是“与«运算符%»不匹配(操作数类型为«int»和«枚举数»)”错误。内置模(%)运算符的操作数应为整数或无范围的枚举类型 枚举器是一个 没有从作用域枚

我想用枚举类中的随机元素填充一个变量

所以我尝试将枚举类类型设置为int,并将最后一个枚举从枚举类传递到rand:

enum类枚举器:int
{
en1=0,
en2,
en3,
恩斯库
};
int main()
{
srand(时间(空));
自动a=静态_转换(rand()%Enumerator::ensCount);
返回0;
}

结果是“与«运算符%»不匹配(操作数类型为«int»和«枚举数»)”错误。

内置模(
%
)运算符的操作数应为整数或无范围的枚举类型

枚举器是一个

没有从作用域枚举数的值到整数类型的隐式转换。
因此,您必须使用
static\u cast
来获取枚举数的数值

int divisor = static_cast<int>(Enumerator::ensCount);
srand(time(NULL));
auto a = static_cast<Enumerator>(rand() % divisor);
int除数=static_cast(枚举数::ensCount);
srand(时间(空));
自动a=静态_转换(rand()%除数);

static_cast(枚举数::ensCount)
错误消息非常清楚,%s在int上工作。您可以将
枚举数::ensCount
强制转换为int。