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

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

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

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

最佳答案

您需要使用 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 编译器确实区分了 native 枚举和托管枚举类型。托管枚举最终出现在元数据中,而 native 枚举则没有。当然,Enum::GetName() 不能用于原生枚举。

必须使用可访问性关键字(publicprivate)来声明托管枚举类型。对 native 枚举无效,这是编译器区分差异的唯一方法。

关于visual-c++ - 如何在 C++ CLI 中获取枚举项的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15302884/

相关文章:

c# - 我们如何在 VC++ 中使用 .NET dll?

c++ - 未解析的外部符号 _D3D10CreateDeviceAndSwapChain@32 在函数“public : bool 中引用

asp.net - VS2012 - 服务器/数据库资源管理器中未显示 "Create table"或 "show table data"菜单选项

asp.net - 错误 : The application which this project type is based on was not found

java - 用于依赖注入(inject)的类型安全枚举

c++ - 我的代码在终端中没有正确执行

c++ - Visual Studio-在单步执行时查看堆栈大小增长的方法?

c# - 无法将多个项目的目标框架从 v4.0 更改为 V4.5 或 4.5.1

c# - Enum.TryParse 对任何数值返回 true

class - 如何编写枚举类型的 Swift 泛型函数?