繁体   English   中英

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

[英]Reassigning a pointer when the object it is pointing to is deleted by an instance of another class

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

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

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

指针似乎无法告诉被锁定的敌人是否被摧毁。 我研究了智能指针,但是鉴于敌人的生命值达到零时会手动删除它们,因此共享指针似乎无法正常工作。

您可以将指向实际Enemy对象的指针存储在变量中。 并且有一个指向BulletTower对象的指针变量的指针。 杀死EnemyEnemyManager可以将变量更改为nullptr ,而BulletTower对象可以通过其拥有的指针检查此事实。

因此,从本质BulletTowerBulletTower锁定在指针变量上,而不是直接锁定在Enemy对象上。

要么

保持统计有多少BulletTower对象已锁定到Enemy 除非该计数变为0,否则不要删除该Enemy对于BulletTower ,当能量变为0时,请BulletTower锁定并减少锁定计数。

指针不足可能可以胜任。

另外,您可以提供一个函数或对象,该函数或对象可以返回当前锁定的敌人(如果还活着),或者返回一个新的对象,而不是给BulletTower一个敌人指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM