【发布时间】:2011-06-07 12:41:34
【问题描述】:
Howard Hinnant explained unique_ptr 也可以使用自定义存储类型。他以“共享内存”为例。
他只给出了粗略的想法(这对于快速介绍来说很好)。但是任何人都可以完成他的 “自定义存储类型” 示例(无论是否共享内存)?
为了支持将
unique_ptr放入共享内存,自定义删除器可以包含自定义指针类型(在共享内存应用程序中通常不是真正的指针)。只需放置一个名为 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() 可能会在真正的“自定义存储类型”示例中做一些额外的事情。
谁能告诉我他/她在哪里
- 实际上已经使用过此自定义,
- 在那个上下文中,
- 哪个自定义代码,(可能在
//...) - 以及客户端代码如何使用它? (
test()可能)
【问题讨论】:
-
这种自定义不太可能有很多用途——因为它是一个非常新的库功能。
标签: c++11 unique-ptr