2010-06-08 93 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