加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

error: conversion from "" to non-scalar type

发布时间:2020-12-16 09:40:35 所属栏目:安全 来源:网络整理
导读: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++代码经

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

搞定

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读