【发布时间】:2015-02-10 09:26:49
【问题描述】:
我有一个用 C# 编写的“JulianDate”结构,它有一个来自 .NET 库的用于 DateTime 的自定义显式运算符。我在我的 C# 代码中多次使用过这个显式操作符,它没有任何问题。
我现在想在我的 C++/CLI 代码中使用相同的显式运算符,但我不知道如何。
我试过了:
-
DateTime^ dt = (DateTime^)jdate;(编译,但我得到一个 InvalidCastException) -
DateTime^ dt = safe_cast<DateTime^>(jdate);(我收到编译器错误) -
DateTime^ dt = DateTime(*jdate);(编译,但 dt 数据错误:1/1/0001 12:00AM) -
DateTime^ dt = dynamic_cast<DateTime^>(jdate);(编译,但返回 null)
为了安全起见,我收到以下错误:
`Error 4 error C2682: cannot use 'safe_cast' to convert from 'Solution::Common::JulianDate ^' to 'System::DateTime ^' C:\Users\9a3eedi\Documents\Solution\Wrapper\Wrapper.cpp 75 Wrapper
执行显式强制转换的正确方法是什么?或者它不工作的原因是因为我使用的是结构而不是类?还是 C++/CLI 不支持 C# 显式运算符?
【问题讨论】:
-
只是为了赶走鬼魂,我会做一个成员函数,它返回你想要的东西,看看它是否有效。如果可行,并且您有时间花在上面,您可以研究如何使演员表操作员工作。
标签: c# .net struct c++-cli explicit-conversion