C++ / CLI: Кастинг от неуправляемого перечисления до управляемого перечисления

CTRL+SHIFT+V циклически повторится через Ваш буфер обмена, Visual Studio сохраняет историю копий.

28
задан Lopper 9 December 2009 в 11:38
поделиться

2 ответа

Предполагая, что ваш собственный код -

enum shape_type_e
{
    stUNHANDLED     = 0,            //!< Unhandled shape data.
    stPOINT         = 1             //!< Point data.
    ...
};

, а ваш управляемый код -

public enum class ShapeType
{
    Unhandled   = 0,
    Point       = 1,
    ...
};

Вы можете преобразовать собственный код в управляемый с использованием

shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);

Я всегда использую static_cast , а не способ преобразования в C #.

39
ответ дан 28 November 2019 в 03:32
поделиться

Это зависит. например, если у вас есть перечисление CLI с базовым типом ushort, оно не может содержать значение 257. По умолчанию перечисление CLI основано на int, что в большинстве случаев должно быть приемлемым. Если ваш собственный код C ++ использует 32-битные целые числа без знака / 64-битные целые числа в качестве базового типа, если перечисления, переключите базу перечисления CLI на UInt32, long или ulong.

1
ответ дан 28 November 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: