2015-05-11 127 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