簡體   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