我有一個問題,我無法在任何地方找到答案。然而,有一些代碼,我必須表明:刪除包含動態指針的STL :: list <class something>的類別
#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()
函數是否會自動銷燬動態指針?或者一個相當直接的問題:我該如何解決這個問題?
好的,非常感謝很多人,三項規則是解決問題的方法之一,它現在可行! –