我有一个C#类:无法施展C#枚举C++枚举当枚举是第三装配
public class MyManagedClass
{
public ManagedEnum EnumValue {get; set;}
}
它使用C#枚举
public enum ManagedEnum
{
Enum1,
Enum2
}
这是由一个C访问++/CLI包装类和枚举:
enum NativeEnum
{
Enum1,
Enum2
};
class WrapperClass
{
public:
WrapperClass(ManagedNamespace::MyManagedClass^ inManaged):
_Managed(inManaged)
{}
NativeEnum GetEnumValue()
{
return (NativeEnum)_Managed->EnumValue;
}
private:
gcroot<ManagedNamespace::MyManagedClass^> _Managed;
};
现在,只要在C#类和C#枚举在同一个组件,这工作正常。
但如果C#枚举在不同的C#组件中,C#类仍然建立罚款,但试图编译C++类产生的错误:
error C2440: 'type cast' : cannot convert from 'OtherNamespace::ManagedEnum' to 'OtherNamespace::NativeEnum'
1> Conversion requires a constructor or user-defined-conversion operator, which can't be used by const_cast or reinterpret_cast
您应该将其标记为答案。 – t3chb0t