[英]Unable to iterate over enum
我目前無法使用以下代碼迭代我的Enum值:
enum class Animals { Ducks, Giraffes, Hamster };
Array^ temp = Enum::GetValues(Animals::typeid);
Console::WriteLine("LENGTH = " + temp->Length);
for (int iter = 0; iter < temp->Length; iter++)
{
Console::WriteLine("ITER = " + iter);
}
它導致以下結果:
LENGTH = 0
我遵循了以下文檔條目:
https://msdn.microsoft.com/en-us/library/system.enum.getvalues(v=vs.110).aspx
謝謝你的時間
C ++ 11語言版本采用了C ++ / CLI中使用的幾個關鍵字。 像nullptr
, override
, final
。 和enum class
關鍵字。 這使得您的Animals在最近的VS版本中鍵入非托管類型,而Enum :: GetValues()無法發現枚舉值,因為它依賴於反射。
override
和final
不是byte,因為它們是上下文關鍵字。 nullptr
是麻煩的,但它保持托管風味, __nullptr
是非托管風味。 enum class
的解決方法是不直觀的,您必須使用頂級類型可見性說明符(公共或私有)聲明它。 在本機C ++中無效的語法。 固定:
public enum class Animals { Ducks, Giraffes, Hamster };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.