2

我有这样的课:

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;

}

人们实现这一点的不同方式以及他们看到的任何问题/优势是什么......谢谢

4

2 回答 2

6

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

这是 BOOST 库的一部分,而不是 STL,因此它可能在您的特定平台上不可用。但是,如果您在 Google 上搜索一下,您会发现很多独立的 refcounted 指针实现可以满足您的需求。

于 2009-09-03T15:49:24.233 回答
3

If I'm understanding your question clearly, I would recommend using ::std::tr1::shared_ptr or ::boost::shared_ptr.

This article is a good tutorial on shared_ptr in TR1. The boost thing is basically the same. I would recommend using the TR1 version if you have it because all C++ compilers are supposed to support TR1 where boost is an add-on library you might not be able to find everywhere.

于 2009-09-03T15:50:32.533 回答