舉例來說,如果我有:我可以在枚舉中放置一個演員操作符以將其轉換爲其他類型嗎?
enum SomeEnum { One, Two, Three };
,我希望能夠直接獲得枚舉爲無符號整數或字符串,我可以寫一個鑄造運營商,將能夠看列舉價值並返回一個合適的表示形式?
我知道你可以用類來做到這一點,但我不確定你是否可以用枚舉來做到這一點。
舉例來說,如果我有:我可以在枚舉中放置一個演員操作符以將其轉換爲其他類型嗎?
enum SomeEnum { One, Two, Three };
,我希望能夠直接獲得枚舉爲無符號整數或字符串,我可以寫一個鑄造運營商,將能夠看列舉價值並返回一個合適的表示形式?
我知道你可以用類來做到這一點,但我不確定你是否可以用枚舉來做到這一點。
枚舉可以轉換爲一個整數,你甚至不需要轉換就可以這樣做。沒有辦法自動將其轉換爲字符串。
如果你願意並行處理一個字符串數組,你可以很容易地使用你的枚舉對它進行索引;唯一的問題是,如果您在更改時不小心修改兩者,它可能會不同步。
char * SomeEnumNames[] = { "One", "Two", "Three" };
cout << SomeEnumNames[One] << endl; // should output "One"
不,這是不可能的,你只能用類來做。你需要編寫一個函數來將枚舉值轉換爲字符串或其他。
請注意枚舉值可以明確地轉換爲int
s,儘管它們自己。
是的,你可以投一個枚舉整數類型是這樣的:
int someInt = (int)someEnumValue;
默認情況下,枚舉將在0開始,增量爲每個值,除非你專門設置的整數值的每個枚舉。您可以將整數值分配給枚舉,如下所示:
public enum SomeType
{
FirstValue = 1,
SecondValue = 3,
ThirdValue = 5
}
'Enum.GetName'對我來說看起來不像C++。 –
@Mark隨機:感謝您指出。看起來我誤解了標籤。其他語法會起作用嗎? –
枚舉從0開始,而不是1. –