2012-11-26 139 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); 
}