我有一個列表,其中存儲了一個指向對象指針的指針。我有一個函數,我創建指向這些對象的指針並將它們的地址存儲在列表中(因此指向指針)。但是,一旦這個函數完成,指針不再有效(對象不是指針,因爲它超出了作用域),所以現在我的指針指針不起作用。你如何解決這個問題?C++指針指針範圍問題
list<Actor**> lst;
void CreateEnemy()
{
Actor* a = new Actor();
lst.push_back(&a);
}
int _tmain(int argc, _TCHAR* argv[])
{
CreateEnemy();
// at this point the pointer to a pointer stored in lst isn't valid anymore because it went out of scope after CreateEnemy() completed.
}
是否有特別的理由來存儲一個指向指向列表中的對象的指針,而不是直接指向該對象的指針? –
如果你需要*(請確保你這樣做)指針的指針,我認爲你必須在你的函數中分配一個'Actor **',而不僅僅是一個'Actor *'。 – chris
克里斯如何看待?我無法獲得正確的語法。所以Actors在一個類中創建並存儲在這個列表中。它們作爲拋射物目標被傳遞給了射彈類。但是5個投射物可以具有相同的目標。第一個射中目標的射手會殺死Actor,導致它被刪除(我想要的),但其他4個射彈仍然會有指向已刪除目標的指針,NULL檢查將不起作用,除非我檢查指向指針的指針。 – user441521