enums - C++/CLI: conversión de enum no administrado a enum administrado
enum class c++ (2)
Depende. por ejemplo, si tiene una enumeración CLI que tiene un tipo subyacente de ushort, no puede contener un valor de 257. Por defecto, la enumeración CLI se basa en int, que debería estar bien en la mayoría de los casos. Si su código nativo de C ++ usa entradas de 64 bits sin firmar / entradas de 64 bits como el tipo subyacente de enumeraciones, cambie la base de la lista de la CLI a UInt32, largo o largo.
¿Cuál es la forma correcta de conversión (en C ++ / CLI) de un enum
código nativo a un enum
código administrado que contiene los mismos valores enum
? ¿Hay alguna diferencia con el uso de la forma C # de conversión como, por ejemplo, (int)
en C ++ / CLI?
Suponiendo que su código nativo es
enum shape_type_e
{
stUNHANDLED = 0, //!< Unhandled shape data.
stPOINT = 1 //!< Point data.
...
};
y su código administrado es
public enum class ShapeType
{
Unhandled = 0,
Point = 1,
...
};
Puedes transmitir desde lo administrado a lo nativo usando
shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);
Siempre uso static_cast
, no el modo C # de static_cast
.