casting - 将 int 转换为枚举

标签 casting enums c++-cli

我正在尝试在 C++/CLI 帮助程序类中使用通用枚举类型,并且如果强制转换不起作用,我希望它默认为 0。我的问题是 result = (T)0; 不起作用。有办法解决这个问题吗?

Error 1 error C2440: 'type cast' : cannot convert from 'int' to 'T'

generic <typename T> where T: value class, Enum
static void SetEnumPropertyValue(String^ value, [Out] T %result)
{
    if (String::IsNullOrEmpty(value))
            false;
    if (!Enum::TryParse<T>(value, true, result))
    {
        result = (T)0;
    }
}

最佳答案

使用:

   result = (T)Enum::ToObject(T::typeid, 0);

或者稍微“丑陋”:

   result = (T)(Object^)0;

关于casting - 将 int 转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637817/

相关文章:

c - 这个 (char*)&x cast 的行为定义明确吗?

java - 创建枚举与创建 Java 类有什么区别?

grails - 枚举作为值对象和模块化

c++-cli - 使用 native 函数指针来监听托管事件/编码问题

c++-cli - CLI/C++ 发布 .exe?

python - 带有偏移量的 numpy 结构化数组的 View

Java:为什么 "long"原始类型不接受简单数字?

c# - 具有与 Java(JNI) 和 C#(C++/CLI) 接口(interface)的可移植 C++ 域层的架构注意事项

在 malloc 期间转换 size_t 以在 c 中初始化 char* 数组

ruby-on-rails - 如何用与数据库中的名称不同的名称来命名枚举?