【发布时间】:2012-07-12 16:06:11
【问题描述】:
我正在创建一个由unique_ptr 管理的类,但由于各种原因,我需要让实现访问指向该对象的原始指针。但是我想确保用户不会无意中删除底层对象。我想出了以下示例代码:
(它是树结构的一部分,我需要能够查看树节点的成员而不实际分离它们。shared_ptr 在这种情况下似乎有点矫枉过正。)
#include <memory>
using namespace std;
class unOnly
{
~unOnly() {}
public:
unOnly() {}
friend class default_delete<unOnly>;
};
int main()
{
unique_ptr<unOnly> ptr(new unOnly());
}
这在 gcc 4.4.5 中为我编译。但是,我可以确定在所有实现中default_delete 是实际deletes 对象,而不是一些私有实现类?我应该自己写删除器来确定吗?
【问题讨论】:
标签: c++ c++11 unique-ptr