2012-11-26 103 views
2

我有一个关于枚举和浮点数的问题。 我想通过一个枚举作为一个浮动是可能的吗?通过枚举浮点数

下面的代码的轮廓:

enum 
{ 
    none = 0, 
    small, 
    medium, 
    large, 
} enumSize; 

class size 
{ 
    float footsize = 0.0; 
} 

void setSize(size &Size, float value) 
{ 
    Size.footsize = value; 
} 

int main() 
{ 
    size Size; 
    setSize(Size, enumSize); 
} 

但是我不能叫的setSize(大小,enumSize),因为据我所知,枚举只能是整数且不能被铸造成为浮动?如果是这种情况,有什么办法可以使我的当前设置成为浮动状态?

如果我的布局有些困惑,请告诉我,我会尽力解决任何困惑。

回答

4

当然,整数可以转换为浮点数,但枚举并不是一个合适的工具。只需使用const float即可。

顺便说一下,你的代码也不能编译为其他几个原因。

+0

我知道这不是我的确切代码,它比上面更复杂,但上面是我想要完成的一个例子。 – sean

+0

我同意这种做法。如果你把'const float's放在很大程度上取决于API的结构 - 大小对象应该知道小的,中等的和大的值,还是应该由其他中介处理?如果是后者,则可以将每个float作为“CommonSizeValues”类的静态成员。是的,这是一种非常Java/C#的方式,但它可以在不需要处理混乱的命名空间问题的情况下工作。 – Randolpho

+0

一切都很好,直到你调用'setSize(mySize,3.14159);'''除非你希望'footSize'是整数值'3'而不是float值'PI'。 –

0

没有涉及铸件,只是一个转换。普通枚举是整数值,当你将其中的一个传递给一个接受浮点数的函数时,该值将被转换为浮点数。

enum enumSize { 
    none, 
    small, 
    medium, 
    large 
}; 

void f(float); 

void g() { 
    f(small); 
}