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/

相关文章:

visual-c++ - 使用Visual C++的OpenCV

c++ - 我的阵列在C++ Visual Studio中仅显示300个元素

c++ - 如何在visual studio中编译c++文件?

Swift Enum 不符合协议(protocol) CaseIterable

c++ - 在MSVC中使用数据成员指针作为模板参数

c++ - 计算字符数组中一行的字符数

c++ - ESP的值未在函数调用中正确保存

c++ - std::chrono::high_resolution_clock 的分辨率与测量值不对应

objective-c - 使用typedef枚举时,返回类型枚举EnumName返回枚举成员时会产生编译器错误

c# - C# 枚举中的空格