C++ 如何从原始指针创建共享指针并让其他共享指针知道它?

问题描述 投票:0回答:1

我有一些类的层次结构(通过组合,而不是继承):

Child
Parent
Child
可以有多个父母,
Parent
也可以做同样的事情。我希望
Child
类的生命周期由
Parent
类管理。

类结构:

class Parent
{
public:
std::shared_ptr<Child> my_chld;
};

class Child
{
...some stuff...
public:
void setParent(Parent* parent)
{
parent->my_child=this;
}
};

并且

main()
看起来像这样:

Parent* prnt1=new Parent();
Parent* prnt2=new Parent();
Child* chld=new Child();
chld->setParent(prnt1);
chld->setParent(prnt2);
delete prnt1;

我想

chld
保持活力,直到所有父母都被删除(所以他们正在管理孩子的一生),该怎么做?在我的版本中,
my_chld
指针不知道另一个画家管理同一对象,所以这是一个问题。 附:或者这种方法是完全错误的?

c++ heap-memory shared-ptr smart-pointers lifetime
1个回答
0
投票

这段代码应该可以解决问题。 在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.