gpt4 book ai didi

c++ - 从容器中添加和删除自身

转载 作者:行者123 更新时间:2023-11-28 06:21:17 27 4
gpt4 key购买 nike

我有一个类Drawable和一类 DrawableManager . DrawableManager应该有一个指向 Drawable 的指针容器s,它可以在其中查找 Drawable 的属性对象并适本地绘制它们。

现在我想要一个Drawable对象将自己添加到 DrawableManager在创建时删除自身并在删除时删除自身。这样的事情可能吗?如果是,可以这样做还是有更好的方法?

我现在的方式是我有 shared_ptr s 到 Drawable对象和 DrawableManager有一个 vectorweak_ptr s 到那些对象,我手动将对象添加到管理器。不过,我希望这个过程自动化。

最佳答案

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

但是,我建议您不要这样做。将存在与成员分开通常很有用,因为Drawable 不是“DrawableManger”的一部分(顺便说一句,参见 http://blog.codinghorror.com/i-shall-call-it-somethingmanager/ 关于它)。 “自动化”过程消除了这种灵 active ,因为基本上没有可用性胜利。

关于c++ - 从容器中添加和删除自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29273946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com