2015-05-11 168 views
0

我有一個指向我創建的稱爲多邊形的類的指針向量,該類有不同形狀的派生類。相關的代碼看起來是這樣的:獲取錯誤「調試斷言失敗」

int main() { 
vector<polygon*> polygonVec; 

polygonVec.push_back(new triangle(2,3,1,2,-1,-4, "triangle 1")); 
polygon *tempPolygon; 
tempPolygon = new rectangle(1,2,3,4,5,6,7,8, "rectangle 1"); 
polygonVec.push_back(tempPolygon); 


for(vector<polygon*>::iterator itr = polygonVec.begin(); 
    itr != polygonVec.end(); 
    itr++) 
{ 
    cout<<*itr<<endl; 
} 

for(vector<polygon*>::iterator itr = polygonVec.begin(); 
    itr != polygonVec.end(); 
    itr++) 
{ 
    delete *itr; 
} 

polygonVec.clear(); 

當我編譯,並在Visual Studio 2012中運行它,它運行正常,並給出了所需的輸出,但隨後在年底

拋出下面的錯誤

「Debug Assertion Failed ... _BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)」。

有人可以告訴我爲什麼會發生這種情況嗎?

+0

這是什麼簽名圖像? –

回答

1

確保你宣佈你polygon析構函數virtual,否則你不確定的行爲,當您試圖通過指針基地多態對象上調用delete

+0

多邊形析構函數是虛擬的,謝謝你的迴應。 編輯:剛剛通過,使其不虛擬,然後再次虛擬,現在它的工作! – Jaco

+0

@Jaco你可能沒有重新編譯,或者類似的東西。很高興它的作品。 – vsoftco