【问题标题】:Cast int to enum将 int 转换为枚举
【发布时间】:2011-10-04 01:48:26
【问题描述】:

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

【问题讨论】:

  • Enum.TryParse 应该是 Enum::TryParse 顺便说一句。
  • @DeCaf 对。我发帖后发现了。谢谢。
  • 您可以随时编辑您的帖子以更正此类问题。可能会让想要复制您的代码并对其进行编译以查看它有什么问题的人更容易。 (仅供参考)
  • 经过更多研究,不需要if (!Enum::TryParse&lt;T&gt;(value, true, result)) { result = (T)0; } 部分,因为 tryparse 默认为枚举的默认值。

标签: casting enums c++-cli


【解决方案1】:

任意使用:

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

或者稍微“丑”一点:

   result = (T)(Object^)0;

【讨论】:

  • 啊。对象^不是对象。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2011-08-18
相关资源
最近更新 更多