霍华德·希南特 解释了 http://home.roadrunner.com/~hinnant/unique_ptr03.html that unique_ptr
还可以使用自定义存储类型。他举了一个例子“共享内存".
他只给出了粗略的想法(这对于快速介绍来说很好)。但是任何人都可以完成他的例子吗“自定义存储类型”(是否共享内存)?
支持放置unique_ptr
到共享内存中,自定义删除器可以包含自定义指针类型(通常不是共享内存应用程序中的真正指针)。只需放置一个嵌套类型 called pointer它模拟删除器中的指针行为,可公开访问:
template <class T>
class MyDeleter
{
public:
class pointer
{
public:
friend bool operator==(pointer x, pointer y);
friend bool operator!=(pointer x, pointer y);
// ...
};
void operator()(pointer p);
};
void test()
{
unique_ptr<int, MyDeleter<int> > p;
MyDeleter<int>::pointer p2 = p.get(); // A custom pointer type used for storage
}
我怀疑// ...
必须延长,并且test()
可能会在真正的“自定义存储类型”示例中执行一些其他操作。
有人可以告诉我他/她在哪里吗
- 实际上已经使用了这个定制,
- 并在那方面context,
- 哪个什么定制代码, (at
//...
大概)
- and how 客户代码使用它吗? (在
test()
大概)
您可能感兴趣升压::offset_ptr http://www.boost.org/doc/libs/release/doc/html/boost/interprocess/offset_ptr.html这是该定制点的激励用例unique_ptr
. offset_ptr
是一个完全开发的指针类型,可以使用简单的 typedef 安装到自定义删除器中。它的用例是unique_ptr
进入共享内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)