2010-06-08 81 views
9

如何在C++中随机选择一个枚举类型的值? 我想做这样的事情。生成随机枚举

enum my_type(A,B,C,D,E,F,G,h,J,V); 
my_type test(rand() % 10); 

但这是非法的......没有从int到枚举类型的隐式转换。

+2

的static_cast就是在这样的情况下,一个很好的朋友。 – 2010-06-08 16:10:16

回答

21

如何:

enum my_type { 
    a, b, c, d, 
    last 
}; 

void f() { 
    my_type test = static_cast<my_type>(rand() % last); 
} 
+1

+1对于较少的硬编码,但我推荐C++风格的static_cast。 – Bill 2010-06-08 16:52:40

+0

当然,我的C++很生疏,很好。 – zildjohn01 2010-06-08 18:57:09

+2

如果枚举值不是连续的,这将不起作用。 – einpoklum 2016-08-15 13:44:50

7

没有隐式转换,但明确的一会工夫:

my_type test = my_type(rand() % 10); 
+0

在接受的答案中提到的一些人隐式转换如果枚举值不连续,将不会工作。它也适用于此? – 2017-09-27 06:25:53