I'm having trouble getting rid of an STD::List iterator. Before I was able to do this:
The list gets populated, etc. Now when I want to delete it I do this:
The code which I will paste further down is inside a class called Inventory. It gets its items via function AddItem():
fyi:I did try push_back, got the same result.
Now, in main, AddItem() is called like this:
And heres the code thats giving me problems, I cant delete InvIter. If I try to do it, the game crashes on exit "Game.exe has stopped working..." Btw. this code here doesn't give me any errors.
Its only when I add "delete (*InvIter)"
I'd also appreciate if someone could tell me how I could correctly send an item to inventorys' AddItem(). And after sending it, how to delete it from the list in main.
std::list<GameObject *> objects; std::list<GameObject *>::iterator iter;
The list gets populated, etc. Now when I want to delete it I do this:
for(iter = objects.begin(); iter != objects.end();)/>/>
{
(*iter)->Destroy();
delete (*iter);
iter = objects.erase(iter);
}
The code which I will paste further down is inside a class called Inventory. It gets its items via function AddItem():
fyi:I did try push_back, got the same result.
bool Inventory::AddItem(Item *item)
{
if(maxWeight - item->GetWeight() >= 0)
{
maxWeight -= item->GetWeight();
InventoryList.emplace_back(item);
return true;
}
else
return false;
}
Now, in main, AddItem() is called like this:
for(ItemIter = Items.begin(); ItemIter != Items.end();++ItemIter)
{
if((*ItemIter)->GetOwnID() == WORLD)
{
if((*ItemIter)->CheckCollisions(player))
{
if(inventory->AddItem((*ItemIter)))
{
(*ItemIter)->SetOwnID(PLAYER);
}
}
}
}
And heres the code thats giving me problems, I cant delete InvIter. If I try to do it, the game crashes on exit "Game.exe has stopped working..." Btw. this code here doesn't give me any errors.
Its only when I add "delete (*InvIter)"
void Inventory::Destory()
{
for(InvIter = InventoryList.begin(); InvIter != InventoryList.end();)/>/>
{
(*InvIter)->Destroy();
InvIter = InventoryList.erase(InvIter);
}
}
I'd also appreciate if someone could tell me how I could correctly send an item to inventorys' AddItem(). And after sending it, how to delete it from the list in main.