在 boost.org 网站上,我看到了一个阻止对 shared_ptr 删除 px.get() 的示例(http://www.boost.org/doc/libs/1_51_0/libs/smart_ptr/sp_techniques.html#preventing_delete)。
这是一个很好的技术,我想在 C++11 中使用 std::unique_ptr 来应用它,经过一段时间的工具,我不能完全让他们的示例与 std::unique_ptr 一起使用。
是否可以防止在 std::unique_ptr 上调用 delete px.get() ?
这是 boost.org 网站上的代码,展示了如何防止 delete px.get 被调用:
class X
{
private:
~X();
class deleter;
friend class deleter;
class deleter
{
public:
void operator()(X * p) { delete p; }
};
public:
static shared_ptr<X> create()
{
shared_ptr<X> px(new X, X::deleter());
return px;
}
};