我有一个这样的课程:
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;
}
人们实现这一目标的方式有何不同以及他们彼此看到的任何问题/优势...... 感谢
答案 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是一个你可能无法在任何地方找到的附加库。