我有一些类的层次结构(通过组合,而不是继承):
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
指针不知道管理同一对象的另一个指针,所以这是一个问题。还是这种做法完全错误?
这段代码应该可以解决问题。 在此输入图片描述