C ++如何将此类实例的boost共享指针传递给嵌套类对象?

时间:2011-08-09 02:07:15

标签: c++ class boost shared-ptr

所以我们有(伪代码):

class A
{
 A(shared_ptr parent){}
}

class B
{
 A *a;
 B()
 {
  a = new A(boost::shared_ptr(this));
 }
}

是否可以在C ++中使用shared_ptr进行此类操作以及如何在真正的C ++代码中执行此操作?

1 个答案:

答案 0 :(得分:6)

您需要enable_shared_from_this

#include <memory>

class B : public std::enable_shared_from_this<B>
{
  A * a;
public:
  B() : a(new A(std::shared_from_this())) { }
};

(这是针对C ++ 0x; Boost应该类似。)

只是从this制作一个共享指针很棘手,因为你可能会自己动手。继承enable_shared_from_this会使这更容易。

警告:您使用裸A指针进行构造似乎无法使用资源管理类。为什么不将a变成智能指针呢?也许是unique_ptr