从具有属性(获取,设置)的C#类编组到C ++类,而没有C#类的其他实例

时间:2018-12-22 16:02:34

标签: c# c++ marshalling

我想使用(例如)C ++(/ clr)中的System.Drawing.PointF变量, 使用msclr :: interop :: marshal_as()。为此,我添加了一个模板专门化,如下所示:

using namespace System::Drawing;
namespace msclr {
    namespace interop {
        template<>
        inline mynmsp::Punt marshal_as<mynmsp::Punt, PointF>(PointF const &from) {
            PointF cpf(from);
            return mynmsp::Punt(cpf.X, cpf.Y);
        }
    }
}

我希望在没有附加实例'PointF cpf(from);'的情况下实现这一目标。 但是,就我所知,使用const引用使此操作不可能实现,并且没有const不会接受PointF&from调用。 显式添加X()或X.get()没有帮助。 我应该补充一点自己的观点,我的C#太糟糕了,试图以最少的成本解决问题,并用C ++做真正的工作。 提前致谢, 扬

PS: 汉斯·帕桑(Hans Passant)的评论解释说,至少在发布版本中,免费提供了解决方法。我认为这是一个解决方案,因为现在可以将其添加为注释,并且我肯定会保留basic jitter optimizations。谢谢。

0 个答案:

没有答案