gpt4 book ai didi

c++ - 当指针指向的对象被另一个类的实例删除时重新分配指针

转载 作者:行者123 更新时间:2023-11-28 04:17:43 25 4
gpt4 key购买 nike

我正在创建一个塔防游戏模型,其中敌人在被摧毁之前试图穿过屏幕。

指向动态分配的 Enemy 对象的指针存储在 EnemyManager 类中的 vector 中,该类控制它们的生成和消失方式。当 Enemy 的生命值达到零时,EnemyManager 会使用 delete 删除它,并且还会 erase 指针。

我有一个 BulletTower 对象,用于锁定单个敌人并射击直到它被摧毁,然后锁定另一个。这需要一个指向 Enemy 对象的指针,但如果 Enemy 死亡并被 EnemyManager 删除,则该指针将悬空。

指针似乎无法判断被锁定的敌人是否已被摧毁。我研究了智能指针,但似乎共享指针不起作用,因为当敌人的生命值达到零时会被手动删除。

最佳答案

您可以将指向实际 Enemy 对象的指针存储在变量中。并为 BulletTower 对象提供指向此指针变量的指针。当 Enemy 被杀死时,EnemyManager 可以将变量更改为 nullptrBulletTower 对象可以检查这个事实, 通过它拥有的指针。

所以本质上,BulletTower 锁定到指针变量,而不是直接锁定到 Enemy 对象。

记录有多少 BulletTower 对象已锁定到 Enemy。不要删除 Enemy,除非该计数已变为 0。对于 BulletTower,当能量变为 0 时关闭锁定并减少锁定计数。

关于c++ - 当指针指向的对象被另一个类的实例删除时重新分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236815/

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