error: conversion from 'std::_List_const_iterator<_Mylist>' to non-scalar type 'std::_List_iterator<

error: conversion from ‘std::_List_const_iterator<_Mylist>’ to non-scalar type ‘std::_List_iterator<_Mylist>’ requested

解决error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”

写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) {
        ...    
     }
}   

搞定

你可能感兴趣的:(c++)