What is the correct way of casting (in C++/CLI) from a native code enum
to a managed code enum
which contain the same enum
values? Is there any difference with using the C# way of casting like for example (int)
in C++/CLI.
Assuming your native code is
enum shape_type_e
{
stUNHANDLED = 0, //!< Unhandled shape data.
stPOINT = 1 //!< Point data.
...
};
and your managed code is
public enum class ShapeType
{
Unhandled = 0,
Point = 1,
...
};
You can cast from the native to the managed using
shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);
I always use static_cast
, not the C# way of casting.