究竟什么是“断言”,或者更具体地说,我如何摆脱错误。当我创建一个指向具有数据成员 int x 的类的指针向量时,然后执行以下操作:
for(I=antiviral_data.begin();I<antiviral_data.end();I++)
{
if((*I)->x>maxx)
{
antiviral_data.erase(I);
}
}
并运行程序,直到 x 大于 maxx 并且我使用 .erase() 之前我没有收到任何错误,此时我收到此错误:
调试断言失败!
程序:...My Documents\O.exe 文件:...include\vector 行:116
表达式:("this->_Has_container()",0)
有关您的程序如何导致断言失败的信息,请参阅有关断言的 Visual C++ 文档。
(按重试调试应用程序)
[中止][重试][忽略]
另外,如果我尝试使用 cout:
cout<<(*antiviral_data.begin())->x<<endl;
我收到此错误:
调试断言失败!
程序:...My Documents\O.exe 文件:...include\vector 行:98
表达式:向量迭代器不可延迟
有关您的程序如何导致断言失败的信息,请参阅有关断言的 Visual C++ 文档。
(按重试调试应用程序)
[中止][重试][忽略]
有人可以告诉我为什么我不能使用向量中的任何数据,以及如何解决它?
还:antiviral_data 是一个指针向量,只有一个元素:
antiviral_data.push_back(new aX1(player.x,player.y,'>'));
如果这有帮助。