链接方法时出现转换类型错误
Conversion type error when chaining method
我对这段涉及迭代结构RouteInfo
中包含的列表的 c++ 代码迷失了方向。代码怎么会出现这个编译错误:Severity Code Description Project File Line Suppression State
Error (active) E0312 no suitable user-defined conversion from "std::_List_const_iterator<std::_List_val<std::conditional_t<true, std::_List_simple_types<int>, std::_List_iter_types<int, size_t, ptrdiff_t, int *, const int *, int &, const int &, std::_List_node<int, void *> *>>>>" to "std::_List_iterator<std::_List_val<std::conditional_t<true, std::_List_simple_types<int>, std::_List_iter_types<int, size_t, ptrdiff_t, int *, const int *, int &, const int &, std::_List_node<int, void *> *>>>>" ...
问题代码
void iterateOverListInStruct(std::multimap<RouteInfo, int> aMap)
{
std::multimap<RouteInfo, int /* vehicle id */>::iterator it = aMap.begin();
for (; it != aMap.end(); it++)
{
std::list<int>::iterator itr = it->first.secList.begin();
}
}
并且此代码不显示任何编译器错误?
void iterateOverListInStruct(std::multimap<RouteInfo, int> aMap)
{
std::multimap<RouteInfo, int /* vehicle id */>::iterator it = aMap.begin();
for (; it != aMap.end(); it++)
{
std::list<int> list = it->first.secList;
std::list<int>::iteartor itr = list.begin();
}
}
这是类RouteInfo
:
class RouteInfo{
public:
list<int>secList;}
std::multimap
的value_type
是std::pair<const Key, T>
,所以it->first.secList
是const std::list<int>
的,begin()
返回std::list<int>::const_iterator
您的第二个示例将其复制到新的非常量std::list<int>
中,然后begin()
返回的迭代器类型std::list<int>::iterator
要修复错误,请将itr
类型更改为std::list<int>::const_iterator
- 无法转换类型 C++
- 包含可变参数包的第一个可转换类型的别名的结构
- 将 std::conditional 与不可转换类型(原始与指针)一起使用
- 链接方法时出现转换类型错误
- 如何避免隐式转换类型
- 在多重继承场景中动态强制转换类型
- 编译器不支持的转换类型
- 错误调用功能无法转换类型
- 我想看到一个在整个后缀表达式的上下文中查找转换类型 id 的示例
- 对于动态类型为强制转换类型的对象,dynamic_cast失败
- 无法在初始化中转换类型
- 如何让"auto"转换类型
- 如何通过强制转换类型指针将字符数组转换为uint16_t
- 如何从新运算符+(Template类)返回具有转换类型的对象
- 带有模板的基于枚举的工厂无法转换类型
- 使用SWIG类型映射通过字符串转换类型
- 对于可转换类型,设计比循环依赖项更好
- SWIG不能正确转换类型定义
- 将类型转换扩展到可转换类型的对/元组
- 想要将字符数组的部分转换/类型转换为值