如何在C ++ CLI中获取枚举项的名称?

时间:2013-03-08 20:39:16

标签: visual-c++ visual-studio-2012 enums c++-cli

我已经拥有以下代码,但变量System::String^ Name_nullptr

enum EWeapons
{
    Fist    =   0   
}
System::String^ Name_ = Enum::GetName( EWeapons::typeid,0)

1 个答案:

答案 0 :(得分:8)

您需要使用enum class关键字来声明托管枚举类型:

public enum class EWeapons
{
    Fist = 0   
};
...
System::String^ Name = Enum::GetName(EWeapons::typeid, (Object^)0);

请注意Visual Studio(VS2012及更高版本)更高版本中的问题,C ++ 11语言规范也采用了enum class关键字。与其他C ++ / CLI关键字一起使用,例如overridenullptr。这对于enum class来说是一个非常讨厌的问题,C ++ / CLI编译器确实区分了本机枚举和托管枚举类型。托管枚举最终出现在元数据中,而本机枚举则没有。当然,Enum :: GetName()不能用于本机枚举。

必须使用辅助功能关键字(publicprivate)来声明托管枚举类型。在本机枚举上无效,编译器可以区分它的唯一方法。