2015-06-19 56 views
0

我想知道是否有任何方式的整數傳遞給一個希望將枚舉類型的函數。傳遞的整數,而不是一個枚舉類型的函數

我需要使用此功能:void SetValue(enumtypevalue){ variable = value},是由一個工作夥伴製成,枚舉是一樣的東西:

typedef enum 
{ 
    Obj1 = 0, 
    Obj2 = 1, 
    ... 
    Objn = m, 
}enumtype; 

的事情是,這個功能是我在我的程序,有使用庫我知道枚舉的數量,但不是名稱(OBJ1,OBJ2 ...),所以我在想,如果可以做到像SetValue(4)代替SetValue(Obj1)所以我的隊友不必overwritte /改變它,我不不得不硬編碼所有的枚舉(這是不小的)。

我知道這聽起來很愚蠢,假裝通過一種類型而不是另一種,但如果你將'Obj1'傳遞給函數,就像'0'一樣,因爲它們是相關的,所以這就是爲什麼我做這個'傻瓜'的問題。

謝謝。

+5

你有沒有什麼可能意義'枚舉'而不是結構? –

+0

對不起,多麼失敗。我已經編輯它謝謝 – Megasa3

+0

不要做typedef枚舉{...} enumName。這不是typedef的用途。 – Injektilo

回答

3

可以澆鑄的整數枚舉類型與的static_cast,例如

SetValue(static_cast<enumtype>(4)); 

雖然這是一個無法維持的最後手段。枚舉點的一部分是比裸整型常量更有意義。使用它們的另一個原因是因爲整型常量可能因爲某些原因需要更改,所以很難找到所有常量用於調用函數並相應地更改它們的代碼中的地方。

你能不能用#可以訪問枚舉類型包括-ING從某處一個頭文件?

+0

嗨,謝謝!我不知道你在那裏也使用statc(我從來沒有想過static_cast不知道爲什麼O.o)Btw ...我不會像你提到的那樣寫這個數字。它的東西更復雜,所以如果數字發生變化,這不會受到影響:)謝謝你的回答! – Megasa3