我正在尝试Poco::AutoPtr
用 boost 中的一些替代方法来代替。这是我迄今为止发现的:
我所拥有的:以下类正在与Poco::AutoPtr
. 他们需要使用实现duplicate()
和方法来实现引用计数release()
方法。
我在上面referece_counted.h
和Poco::AutoPtr
复杂的类层次结构中使用多重继承和 C++ 菱形问题。
类的简化版本看起来像这样
class A : virtual public ReferenceCounted
{
...
}
class B : public A
{
...
}
class C : public A
{
...
}
class D : public A, B
{
...
}
并且列表继续深入几个层次。我知道这需要使用简化的层次结构进行重构,但我想Poco::AutoPtr
首先在 boost 中通过适当的替换来删除:
到目前为止我发现了什么:我发现boost::intrusive_ptr是最接近的智能指针,可以很好地替代Poco::AutoPtr
.
然而,我无法用这个实现正确的解决方案,因为 intrusive_ptr 需要专门为每个需要使用指针的类创建的 intrusive_ptr_add_ref 和 intrusive_ptr_release 方法。我尝试使用模板,但手头仍然没有合适的解决方案。
还有一个问题是我需要多次从基类转换为派生类。
intrusive_ptr 是这种用法的正确智能指针吗?如果是的话..有人可以给我关于如何使用它的建议吗?