我正在创建一个由 a 管理的类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
中实际上是什么delete
对象,而不是某些私有实现类?我应该写自己的删除器来确定吗?