Приведите int к enum - PullRequest
       28

Приведите int к enum

2 голосов
/ 03 октября 2011

Я пытаюсь использовать универсальный тип enum в классе помощника C ++ / CLI, и я хочу, чтобы по умолчанию он был равен 0, если приведение не работает.Моя проблема в том, что result = (T)0; не работает.Есть ли способ обойти это?

Ошибка 1, ошибка C2440: «приведение типа»: невозможно преобразовать из «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 Ответ

3 голосов
/ 03 октября 2011

Либо используйте:

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

или немного "уродливее":

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