写C++代码经常会使用const作为函数入参,如果这个变量是STL类型或者包含STL类型,在使用iterator时容易会这么使用。
void list_print(const list<int> &list)
{
for (list<int>::iterator iter = list.begin();
iter != list.end();
++iter) {
...
}
}
这个情况下会报如下错误
error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
或者是
error: conversion from 'std::_List_const_iterator<_Mylist>' to non-scalar type 'std::_List_iterator<_Mylist>' requested
这里是因为list本身是const类型,需要使用const型的iterator才行,也就是list::const_iterator
代码改为
void list_print(const list<int> &list)
{
for (list<int>::const_iterator iter = list.begin();
iter != list.end();
++iter) {
...
}
}
搞定