我有一个列表,其中存储了一个指向对象指针的指针。我有一个函数,我创建指向这些对象的指针并将它们的地址存储在列表中(因此指向指针)。但是,一旦这个函数完成,指针不再有效(对象不是指针,因为它超出了作用域),所以现在我的指针指针不起作用。你如何解决这个问题?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