【发布时间】:2013-07-06 04:59:32
【问题描述】:
我有一个问题,但在任何地方都找不到答案。但是,我必须显示一些代码:
#include "Vector2D"
class something
{
Vector2D * p_Position;
public:
something(){p_Position = new Vector2D;}
~something(){delete p_Position;}
};
int main()
{
std::list<something> Somethinglist;
Somethinglist.push_back(something());
Somethinglist.clear();
return 0;
}
因此,当涉及到.clear() 函数时,这将导致断言失败。所以我尝试了一些东西。首先,如果我不将 delete p_Position 放入解构函数中,则此代码完全有效。这是为什么? STL列表.clear()函数会自动销毁动态指针吗?或者一个相当直接的问题:如何修复此代码?
【问题讨论】:
标签: c++ list stl delete-operator