Boost或其他任何东西是否包含一种容器,可以像共享指针一样工作,但允许我控制在其生命周期结束时发生的共享 "资源" 的内容?我想封装一个可以分配的对象,但是当不再需要时,可以以定义的方式关闭。
例如,我可能想要创建和传递文件句柄,知道当它超出范围时,文件将自动关闭,但我不想删除句柄。我可以自己实现它,但如果框架已经存在,我宁愿不涉及其中 - 毋庸置疑,有人做得更好。我不能使用boost :: shared_ptr,至少不是其正常形式,因为资源不应在生命周期结束时被删除。
例如,我可能想要创建和传递文件句柄,知道当它超出范围时,文件将自动关闭,但我不想删除句柄。我可以自己实现它,但如果框架已经存在,我宁愿不涉及其中 - 毋庸置疑,有人做得更好。我不能使用boost :: shared_ptr,至少不是其正常形式,因为资源不应在生命周期结束时被删除。
template<class Y, class D> shared_ptr(Y * p, D d);
构造函数? - Steve Jessopshared_ptr
也有它。基本上,你最初提到不能使用boost::shared_ptr
的原因是不正确的。这个新的原因,即客户端不允许使用,更具有说服力。如果客户端不允许您使用任何形式的shared_ptr
(没有TR1,没有Boost,没有C++11),那么对于您的问题,答案是“是的,有一个智能指针完全符合您的要求,但您不能使用它”。 - Steve Jessop