我正在为一个类项目编写一些代码。其中一项任务是删除指向我们创建的类的指针集合。解决方案如下所示:
CDocument::~CDocument()
{
for(std::list<CActor*>::iterator it = mActors.begin(); it != mActors.end(); it++)
{
delete *it;
}
mActors.clear();
}
我的解决方案如下所示:
CDocument::~CDocument()
{
for(std::list<CActor*>::iterator it = mActors.begin(); it != mActors.end(); it++)
{
delete **it;
}
}
我的困惑源于取消引用迭代器。我想从列表中删除 CActor 对象。在这种情况下,迭代器为我提供了一个指向指针的指针。为什么我要删除 CActor 指针 *it,而不是内存中的实际对象 **it?另外,为什么要额外的 mActors.clear()?