托管 C++/CLI 类中的 auto_ptr 或 shared_ptr 等效项
在 C++/CLI 中,您可以在托管类中使用本机类型,因为不允许在托管类中保存本机类的成员:在这种情况下您需要使用指针。
这里有一个例子:
class NativeClass
{
....
};
public ref class ManagedClass
{
private:
NativeClass mNativeClass; // Not allowed !
NativeClass * mNativeClass; // OK
auto_ptr<NativeClass> mNativeClass; //Not allowed !
boost::shared_ptr<NativeClass> mNativeClass; //Not allowed !
};
有谁知道 C++/CLI 世界中的shared_ptr 的等价物吗?
编辑: 感谢您的建议“1800-信息”。 根据您的建议,我检查了 STL.Net,但它仅适用于 Visual Studio 2008,并且它提供容器+算法,但没有智能指针。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我还没有彻底测试过这个,但是像下面这样怎么样:
这应该让你可以在引用类中互换使用 C++11/Boost 的共享指针。
I haven't thoroughly tested this but how about something like the following:
This should let you use C++11/Boost's shared_ptrs interchangebly in ref classes.
我在 codeproject 上找到了答案:
Nishant Sivakumar 在 http://www.codeproject.com/KB/mcpp/CAutoNativePtr.aspx
在此页面上,还要查找Denis N. Shevchenko 的评论:他提供了一个类似 stl 的实现,效果非常好。
I found the answer on codeproject :
Nishant Sivakumar posted an article about this at http://www.codeproject.com/KB/mcpp/CAutoNativePtr.aspx
On this page, also look for the comment by Denis N. Shevchenko : he provides a stl-like implementation that works quite well.
对于那些来这里寻找托管
auto_ptr
的人:https://learn.microsoft.com/en-us/cpp/dotnet/auto-gcroot-class
For those who come here and looking for a managed
auto_ptr
:https://learn.microsoft.com/en-us/cpp/dotnet/auto-gcroot-class
STL.Net 记录在此处。 我不知道它处于什么状态,也不知道它对你有什么用处。
STL.Net is documented here. I don't know what state it is in or what use it might be for you.