我正在尝试在 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/