无法迭代枚举
Unable to iterate over 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 版本中成为 unmanaged 类型,并且 Enum::GetValues() 无法发现枚举值,因为它依赖于反射。
override
和 final
不字节,因为它们是上下文关键字。 nullptr
很麻烦,但它仍然是托管风味,而 __nullptr
是非托管风味。 enum class
的解决方法不直观,您必须使用顶级类型可见性说明符(public 或私有)声明它。在本机 C++ 中无效的语法。修复:
public enum class Animals { Ducks, Giraffes, Hamster };
我目前无法使用以下代码迭代我的枚举值:
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 版本中成为 unmanaged 类型,并且 Enum::GetValues() 无法发现枚举值,因为它依赖于反射。
override
和 final
不字节,因为它们是上下文关键字。 nullptr
很麻烦,但它仍然是托管风味,而 __nullptr
是非托管风味。 enum class
的解决方法不直观,您必须使用顶级类型可见性说明符(public 或私有)声明它。在本机 C++ 中无效的语法。修复:
public enum class Animals { Ducks, Giraffes, Hamster };