2011-05-20 41 views
2

我正在使用C++和.NET 1.1,並且需要將字符串值解析爲來自枚舉器的相應int值。嘗試從Enum :: Parse獲取來自字符串的int值

我有一個枚舉

__value static enum myEnum { 
    VALUE1, 
    VALUE2, 
    VALUE3 
}; 

,我想沿着

int value = (int)Enum::Parse(__typeof(myEnum), stringToParse); 

int value = (myEnum)Enum::Parse(__typeof(myEnum), stringToParse); 

線做一些不同之處在於Enum::Parse返回Object*當然,我只是不能解決如何將該對象投射到int

我在做什麼錯? (與託管擴展有關,就像上次我被卡住了一樣?)

回答

1

它應該只是一個unbox--儘管你可能想要解除枚舉然後投射。在C#中,類似於;

int value = (int)(myEnum)Enum.Parse(typeof(myEnum), stringToParse); 

不知道是什麼樣子的C++雖然。

在C#以下的作品,但我不能保證如何正式:在上述

int value = (int)Enum.Parse(typeof(myEnum), stringToParse); 

注意我假設myEnum使用Int32作爲基礎類型。如果這是不是的情況下,那麼你需要調整它爲unbox作爲正確的基礎類型第一

通過反射運行它,我得到:

Int32 __gc* value = *static_cast<__box Int32*>(
    *static_cast<__box myEnum*>(Enum::Parse(__typeof(myEnum), stringToParse))); 
+0

上最後的代碼片斷輕微的調整得到它的工作。 int value =(int)(* static_cast <__ box myEnum *>(Enum :: Parse(__ typeof(myEnum),stringToParse)));謝謝。 =) – 2011-05-20 12:02:26

相關問題