如题,编译可以通过,运行中报错。
通过单步可以找到报错的地方在一个普通的list遍历的循环里,用法肯定是没有问题,经过百度,发现原因如下:
我原本的做法是:
1,声明一个List以及他的iterator
std::list<MyType*> myList;std::list<MyType*>::iterator myIt;2,在代码中将新的list直接赋值给myList
void SetList(std::list<MyType*> newList)
{
myList = newList;
}3,遍历myList
for(myIt=myList.begin;myIt!=myList.end;myIt++)
{
//to do...
}注意,以上是错误的做法,原因是myIt是myList的迭代器,而myList被赋新值之后变成了别的list的副本,所以myIt和被赋值后的myList的迭代器自然也是incompatable(无法比较)的。版权声明:本文为bark2003原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。