我有一个班级Drawable
和一个班级DrawableManager
。 DrawableManager
应该有一个指向Drawable
s指针的容器,它可以查找Drawable
个对象的属性并适当地绘制它们。
现在我希望Drawable
对象在创建时将自己添加到DrawableManager
,并在删除时删除它自己。有可能吗?如果是,可以这样做还是有更好的方法?
我现在拥有的方式是shared_ptr
Drawable
个DrawableManager
个对象vector
weak_ptr
{{1}}个{{1}}个,我手动将对象添加到管理器。我希望这个过程是自动化的。
答案 0 :(得分:1)
好吧,你可以将DrawableManager*
传递给Drawable
构造函数,它会自行添加,然后在析构函数中删除它自己。请注意,在这些时候,它的动态类型将是Drawable
而不是派生类型,因此请注意不要将虚拟方法作为添加的直接结果。
但是,我建议你不要这样做。将存在与成员资格分开通常很有用,使Drawable
不成为" DrawableManger"的一部分。 (顺便提一下,请参阅http://blog.codinghorror.com/i-shall-call-it-somethingmanager/)。 "自动化"这个过程消除了这种灵活性,基本上没有可用性。