我目前正在尝试学习如何使用智能指针。但是,在进行一些实验时,我发现以下情况,无法找到令人满意的解决方案:
假设您有一个类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
)的a传递给它的子对象?
有用于升压共享指针(解决方案获得一个boost::shared_ptr
对this
),但如何使用来处理std::
智能指针?
2
与其他任何工具一样,您必须在适当的时候使用它。不是
—
YePhIkK 2012年
与此类似。看这里。
—
juanchopanza 2012年
在该抽象级别上,这是一个问题。您甚至都不知道“ this”指向堆上的内存。
—
沃恩·卡托
好吧,语言不是,但是您可以。只要您跟踪什么在哪里,就可以了。
—
亚历克斯