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

来源:互联网 发布:什么是php网站 编辑:程序博客网 时间:2024/06/16 15:10

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

搞定

阅读全文
0 0