拳击原生 C++指针

发布于 2024-10-12 20:30:03 字数 229 浏览 2 评论 0原文

我有一个指向本机类的指针,并想将其暂时包装在一个对象中。我认为 System::Reflection::Pointer::Box() 函数将是可行的方法。但是我在格式化第二个参数时遇到问题。

class A {}
A * a;
Object ^ o = Box(a, A::typeid);

我收到一个运行时错误,提示“类型必须是指针”,正如我认为的那样。但我无法弄清楚语法。

I have a pointer to a native class and want to temporarily wrap it in a Object. I assume the System::Reflection::Pointer::Box() function would be the way to go. However I'm having trouble formatting the second parameter to it.

class A {}
A * a;
Object ^ o = Box(a, A::typeid);

I get a runtime error that says 'Type must be a pointer', as I suppose it should be. But I cannot figure out the syntax.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溇涏 2024-10-19 20:30:03

我也无法让 System.Reflection.Pointer.Box 工作,但发现可以使用简单的 IntPtr 来完成您正在尝试的操作。

A * a = new A;
Object ^o = gcnew IntPtr(a); // a is boxed in o
IntPtr i = safe_cast<IntPtr>(o); // Unbox the IntPtr
A * aIsBack = static_cast<A*>(i.ToPointer()); // Retrieve a

I couldn't get System.Reflection.Pointer.Box to work either, but found the capability to do what you are trying with humble IntPtr.

A * a = new A;
Object ^o = gcnew IntPtr(a); // a is boxed in o
IntPtr i = safe_cast<IntPtr>(o); // Unbox the IntPtr
A * aIsBack = static_cast<A*>(i.ToPointer()); // Retrieve a
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文