2010-05-15 111 views
1

这工作:枚举类型在C++

enum TPriority 
{ 
    EPriorityIdle = -100, 
    EPriorityLow = -20, 
    EPriorityStandard = 0, 
    EPriorityUserInput = 10, 
    EPriorityHigh = 20 
}; 

TPriority priority = EPriorityIdle; 

但是,这并不工作:

TPriority priority = -100; 

的原因吗?

回答

10

它也能工作,但需要明确的类型

TPriority priority = (TPriority)-100; 
2

你不能一个int分配给枚举,即使值相匹配的枚举的值之一。

然而,在浇铸将工作:

TPriority priority = static_cast<TPriority>(-100); 
0

有一个从枚举类型枚举类型本身的价值没有类型转换。只有其他的方式。

4

简而言之:它违背了枚举的目的