当指针指向的对象被另一个类的实例删除时,重新分配指针
Reassigning a pointer when the object it is pointing to is deleted by an instance of another class
我正在创建一个塔防游戏模型,敌人试图在被摧毁之前穿过屏幕。
指向动态分配的 Enemy 对象的指针存储在 EnemyManager 类内的向量中,该类控制它们的生成和取消生成方式。当敌人的生命值达到零时,敌人管理器会使用delete
删除它,并erase
指针。
我有一个子弹塔对象,它旨在锁定一个敌人并射击直到它被摧毁,然后锁定到另一个敌人。这需要一个指向敌人对象的指针,但如果敌人死亡并被敌人管理器删除,指针将悬空。
指针似乎没有办法判断被锁定的敌人是否被摧毁。我研究了智能指针,但似乎共享指针不起作用,因为当敌人的生命值为零时,敌人会被手动删除。
可以将指向实际Enemy
对象的指针存储在变量中。并有一个指向此指针变量的指针,用于BulletTower
对象。当Enemy
被杀死时,EnemyManager
可以将变量更改为nullptr
,BulletTower
对象可以通过它拥有的指针检查这一事实。
因此,从本质上讲,BulletTower
直接锁定指针变量,而不是Enemy
对象。
或
维护已锁定到Enemy
的BulletTower
对象数的计数。除非该计数变为 0,否则不要删除Enemy
。对于BulletTower
当能量变为 0 时取下锁并减少锁计数。
弱指针也许可以完成这项工作。
此外,您可以提供一个函数或对象,而不是给一个指向子弹塔的敌人指针,如果还活着,它会返回当前锁定的敌人,或者返回一个新的敌人。
相关文章:
- 将指针类分配给新类,C++
- 新分配指向函数的指针是否合法?
- 通过在编译时折叠带有索引的指针来分配 C 数组
- 如何定义全局函数指针并分配给特定地址
- 在函数返回中返回对新分配的shared_ptr的尊重合法吗
- 如何检查C++智能指针内存分配是否成功?
- 如何删除新分配的字符,这也是函数返回值?
- 防止指针重新分配
- 在一行中初始化指针(新uint8_t[高度*宽度*3])
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- 错误:释放指针未分配在矢量模板类C 中
- 对共享指针重新分配进行切片
- C ++中新分配的int的内存大小,有没有不同更好的方法来查看它?
- 删除指针内存分配以避免内存泄漏
- 指针被分配给错误的局部变量
- 为堆栈和堆指针重新分配内存
- malloc - 运行时内存指针类型分配
- 为什么我的新分配指针会自动在程序退出上删除
- 为什么此指针未分配给新对象
- 返回新分配的指针或通过参数更新对象