Enums 如何在C+中将C可为null的枚举强制转换为int+/CLI

Enums 如何在C+中将C可为null的枚举强制转换为int+/CLI,enums,c++-cli,nullable,Enums,C++ Cli,Nullable,我想将C#可为null的枚举转换为int 现在,我有一些类似于: c# c++/cli function(System::Nullable<Dir> d){ if(d != NULL){ (int)d; error C2440: 'type cast' : cannot convert from 'System::Nullable<T>' to 'int' } } 函数(系统::可为null的d){ 如果(d!=NULL){ (int)d;错

我想将C#可为null的枚举转换为int

现在,我有一些类似于:

c#

c++/cli

function(System::Nullable<Dir> d){
   if(d != NULL){
       (int)d; error C2440: 'type cast' : cannot convert from 'System::Nullable<T>' to 'int' 
   }
}
函数(系统::可为null的d){
如果(d!=NULL){
(int)d;错误C2440:“类型强制转换”:无法从“System::Nullable”转换为“int”
}
}
那么,如何强制转换可为null的枚举? 没有这样的可空int c++/CLI或


谢谢

您应该能够使用
.value
属性访问
Nullable
的值,并将其强制转换为
int

免责声明:我从未使用过C++/CLI,您需要使用它来测试null(出于某种原因,C++/CLI不允许您与
nullptr
进行比较),并且您可以使用它来检索值,然后将其转换为整数

void function(System::Nullable<Dir> d){
   if(d.HasValue){
       int i = (int)d.Value;
   }
}
void函数(系统::可为null的d){
if(d.HasValue){
int i=(int)d.值;
}
}
void function(System::Nullable<Dir> d){
   if(d.HasValue){
       int i = (int)d.Value;
   }
}