2016-08-22 7 views
1

Я в настоящее время не перебирать мои значения 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

Спасибо за ваше время

+0

См [здесь] (http://stackoverflow.com/questions/8498300/allow-for-range-based-for-with-enum-classes), как делать новые перечислений диапазон стиле. –

ответ

3

Пересмотр языка C++ 11 принял несколько ключевых слов, которые использовались в C++/CLI. Мне нравится nullptr, override, final. И ключевое слово enum class. Это делает ваш тип животных неуправляемым типами в последних версиях VS и Enum :: GetValues ​​() неспособным обнаруживать значения перечисления, поскольку он полагается на отражение.

override и final не байт, так как они являются контекстуальными ключевыми словами. nullptr хлопотно, но он остается управляемым вкусом, а __nullptr - неуправляемый аромат. Обходной путь для enum class неинтуитивный, вы должны объявить его с помощью спецификатора видимости верхнего уровня (открытого или закрытого). Синтаксис, который недействителен в C++. Fix:

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

 Смежные вопросы

  • Нет связанных вопросов^_^