我有一个管理器类,持有指向虚基类的指针向量,以允许存储多种子类。在此管理器类的析构函数中,我希望它能循环遍历所有持有的指针并将其删除。然而,我尝试了许多方法,但程序在执行过程中仍然崩溃。
下面是我目前的代码:
下面是我目前的代码:
for (std::vector<GameState*>::iterator it = gamestates_.begin(); it != gamestates_.end(); ++it){
delete *it;
it = gamestates_.erase(it);
}
我还没有尝试过使用unique_ptr,但我相信应该能够处理它们而不使用它们。如果我错了,请纠正我。
编辑:我知道应该在循环后清除向量,但这是在尝试了每种常规方法删除指针后得出的结果。它似乎不喜欢delete命令。
GameState
有一个,并且还要确保管理器类没有意外复制向量。 - Mike Seymourunique_ptr
将自动为您防止复制。如果基类没有要清理的内容,则虚拟析构函数可以为空;它只需要存在即可。 - Mike Seymour