enum enums casting c++-cli native managed

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 .