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

问题描述 投票: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个回答
-2
投票

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

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