すでに次のコードがありますが、変数System::String^ Name_
は次のとおりですnullptr
。
enum EWeapons
{
Fist = 0
}
System::String^ Name_ = Enum::GetName( EWeapons::typeid,0)
すでに次のコードがありますが、変数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 キーワードoverride
とともにnullptr
。これは にとってかなり厄介な問題ですenum class
。C++/CLI コンパイラは、ネイティブの列挙型と管理された列挙型を区別します。管理された列挙型は最終的にメタデータに入りますが、ネイティブ列挙型はそうではありません。もちろん、Enum::GetName() はネイティブ列挙型では機能しません。
マネージド列挙型を宣言するには、アクセシビリティ キーワード (または) を使用する必要があります。コンパイラが違いを見分ける唯一の方法である、ネイティブの列挙型では無効です。public
private