如何使用auto_ptr作为处理另一个成员变量的成员变量

时间:2009-09-03 15:47:20

标签: c++ auto-ptr

我有一个这样的课程:

class A 
{

 private:

 B* ptr;

}

但是B ptr在不同的A对象之间共享。 我如何使用auto_ptr,以便在A被破坏时B保持打开,以便指向同一个ptr的其他A对象可以继续而不会出现问题。 这看起来不错:

class A
{
public:

 auto_ptr< B > m_Ptr;

private:

 B* ptr;

}

人们实现这一目标的方式有何不同以及他们彼此看到的任何问题/优势...... 感谢

2 个答案:

答案 0 :(得分:6)

您正在寻找的是shared_ptr。它处理这种类型的场景。

这是BOOST库的一部分,但不是STL,因此可能无法在您的特定平台上使用。但是,如果你稍微谷歌,你可以找到很多独立的refcounted指针实现,以满足您的需求。

答案 1 :(得分:3)

如果我清楚地理解您的问题,我建议您使用::std::tr1::shared_ptr::boost::shared_ptr

这篇文章是a good tutorial on shared_ptr in TR1。提升的东西基本相同。我建议使用TR1版本,因为所有C ++编译器都应支持TR1,其中boost是一个你可能无法在任何地方找到的附加库。