将int转换为枚举

时间:2011-10-03 16:27:34

标签: casting enums c++-cli

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

  

错误1错误C2440:'type cast':无法从'int'转换为'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;
    }
}

1 个答案:

答案 0 :(得分:3)

使用:

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

或稍微“丑陋”:

   result = (T)(Object^)0;