簡體   English   中英

無法迭代枚舉

[英]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中使用的幾個關鍵字。 nullptroverridefinal enum class關鍵字。 這使得您的Animals在最近的VS版本中鍵入非托管類型,而Enum :: GetValues()無法發現枚舉值,因為它依賴於反射。

overridefinal不是byte,因為它們是上下文關鍵字。 nullptr是麻煩的,但它保持托管風味, __nullptr是非托管風味。 enum class的解決方法是不直觀的,您必須使用頂級類型可見性說明符(公共或私有)聲明它。 在本機C ++中無效的語法。 固定:

   public enum class Animals { Ducks, Giraffes, Hamster };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM