最佳答案
我目前正在学习如何使用智能指针。然而,在做一些实验时,我发现了以下情况,我无法找到一个令人满意的解决方案:
假设 A 类的一个对象是 B 类的一个对象(子对象)的父对象,但是两个对象应该互相认识:
class A;
class B;
class A
{
public:
void addChild(std::shared_ptr<B> child)
{
children->push_back(child);
// How to do pass the pointer correctly?
// child->setParent(this); // wrong
// ^^^^
}
private:
std::list<std::shared_ptr<B>> children;
};
class B
{
public:
setParent(std::shared_ptr<A> parent)
{
this->parent = parent;
};
private:
std::shared_ptr<A> parent;
};
问题是 A 类的对象如何将自身的 std::shared_ptr
(this
)传递给它的子对象?
Boost 共享指针(获取 ABC1的 boost::shared_ptr
)有解决方案,但是如何使用 std::
智能指针来处理这个问题呢?