在容器中添加和删除自身

时间:2015-03-26 08:30:50

标签: c++ containers c++14

我有一个班级Drawable和一个班级DrawableManagerDrawableManager应该有一个指向Drawable s指针的容器,它可以查找Drawable个对象的属性并适当地绘制它们。

现在我希望Drawable对象在创建时将自己添加到DrawableManager,并在删除时删除它自己。有可能吗?如果是,可以这样做还是有更好的方法?

我现在拥有的方式是shared_ptr DrawableDrawableManager个对象vector weak_ptr {{1}}个{{1}}个,我手动将对象添加到管理器。我希望这个过程是自动化的。

1 个答案:

答案 0 :(得分:1)

好吧,你可以将DrawableManager*传递给Drawable构造函数,它会自行添加,然后在析构函数中删除它自己。请注意,在这些时候,它的动态类型将是Drawable而不是派生类型,因此请注意不要将虚拟方法作为添加的直接结果。

但是,我建议你不要这样做。将存在与成员资格分开通常很有用,使Drawable 成为" DrawableManger"的一部分。 (顺便提一下,请参阅http://blog.codinghorror.com/i-shall-call-it-somethingmanager/)。 "自动化"这个过程消除了这种灵活性,基本上没有可用性。

相关问题