我有一個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