2
已經我有以下的代碼,但變量System::String^ Name_
是nullptr
:如何在C++ CLI中獲取枚舉項的名稱?
enum EWeapons
{
Fist = 0
}
System::String^ Name_ = Enum::GetName(EWeapons::typeid,0)
已經我有以下的代碼,但變量System::String^ Name_
是nullptr
:如何在C++ CLI中獲取枚舉項的名稱?
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關鍵字一起使用,如override
和nullptr
。對於enum class
來說這是一個非常討厭的問題,C++/CLI編譯器會區分本機枚舉類型和託管枚舉類型。受管枚舉最終在元數據中,本地枚舉不。當然,Enum :: GetName()不能用於本地枚舉。
您必須使用輔助功能關鍵字(public
或private
)來聲明託管枚舉類型。對於本機枚舉無效,編譯器能夠區分這種差異的唯一方法。
它沒有解決我的問題,Name_仍然是nullptr。 – 2013-03-08 20:55:05
這當然_should_工作,但它不適用於我的VC++ 2012 RTM。即使MSDN上的Enum :: GetName示例也不起作用... – ildjarn 2013-03-08 21:18:37
@ildjarn這應該算作一個錯誤。這只是MSDN的例子,它不工作! (使用Visual Studio 2012旗艦版) – 2013-03-08 21:24:28