解决error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
来源:互联网 发布:淘宝卖刀为什么能寄 编辑:程序博客网 时间:2024/06/06 10:35
学习C++时,当使用vector、list的常量做为某函数的参数时,如
error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
因为传入的参数为const,所以调用的是第二个函数,返回的是const_iterator,而不是iterator,才会报错。
void ListPrint(const list<int> <){list<int>::iterator iter = lt.begin();while(iter != lt.end()){cout << *iter << endl;}}会报如下错误
error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
查看list源码后发现list.begin()有两个函数
iterator begin(){// return iterator for beginning of mutable sequencereturn (iterator(this->_Nextnode(this->_Myhead), this));}
const_iterator begin() const{// return iterator for beginning of nonmutable sequencereturn (const_iterator(this->_Nextnode(this->_Myhead), this));}
因为传入的参数为const,所以调用的是第二个函数,返回的是const_iterator,而不是iterator,才会报错。
在原有基础上做如下修改即可正确运行
void ListPrint(const list<int> <){list<int>::const_iterator iter = lt.begin();//iterator修改为const_iteratorwhile(iter != lt.end()){cout << *iter << endl;}}
0 0
- 解决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<
- gmsh编译error C2440: “初始化”: 无法从“std::_Tree_iterator<_Mytree>”转换为“std::_Tree_iterator<_Mytree>”
- C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“PPkgHead”
- error C2440: “初始化”: 无法从“DicomImage *”转换为“DicomImage”解决方案
- error C2440: “初始化”: 无法从“const char *”转换为“char *”
- error C2440: “初始化”: 无法从“char *”转换为“int”
- 解决:错误1error C2440: “初始化”: 无法从“char *”转换为“ATL::CStringT<BaseType,StringTraits>
- error C2440: “初始化”: 无法从“StructOne *(*)[10]”转换为“StructOne *[9][10]”
- error C2440: “初始化”: 无法从“const char *”转换为“ATL::CStringT<BaseType,StringTraits>”
- error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType,StringTraits>”
- error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType,StringTraits>”
- error C2440: “类型转换” : 无法从“overloaded-function”转换为
- error C2440: “类型转换”: 无法从“LPVOID”转换为“double
- error C2440:CMainFrame 无法从 NMTOOLBARA 转换为 NMHDR
- error C2440: "reinterpret_cast":无法从"NMHDR*"转换为"NMITEMACTIVATE"
- error C2440: "reinterpret_cast":无法从"NMHDR*"转换为"NMITEMACTIVATE"
- error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE
- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
- Java基础——集合
- 430F4时钟输出引脚官方例程
- iOS 面试题(16):解释垃圾回收的原理
- socket INADDR_ANY 监听0.0.0.0地址 socket只绑定端口让路由表决定传到哪个ip
- 解决error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
- 对JS闭包的一点点理解
- windows dos 命令操作环境变量
- 对比测试阿里云、linode、vultr运行速度
- 修改已经push的commit,但是不增加commit history
- 千万级的大表!MySQL这样优化更好
- 单例模式
- LLBL Gen 基本代码操作
- Error: ‘shared_ptr’ in namespace ‘std’ does not name a type