2011-10-03 118 views
2

我想在C++/CLI帮助器类中使用泛型枚举类型,如果强制转换不起作用,我希望它默认为0。我的问题是,result = (T)0;不起作用。有没有解决的办法?强制int转换为枚举

错误1个错误C2440: '类型转换':

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

或略微“丑陋:无法从 '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; 
    } 
} 
+0

Enum.TryParse应该是Enum :: TryParse btw。 – DeCaf

+0

@DeCaf对。发布后我发现了这一点。谢谢。 – mydogisbox

+0

你总是可以编辑你的文章来纠正这样的事情。可能会让那些想要复制代码并编译它以查看其错误的人更容易。 (仅供将来参考) – DeCaf

回答

3

要么使用转换“:

result = (T)(Object^)0; 
+0

啊。对象^不是对象。非常感谢! – mydogisbox