gpt4 book ai didi

c++ - 通过引用传递迭代器会产生错误 : cannot convert parameter 1 from 'const data' to 'data &

转载 作者:行者123 更新时间:2023-11-28 00:16:10 24 4
gpt4 key购买 nike

我有一个函数 int func(data& dt) .它s need to use the list of structures lst . It建议 map 和 list 有一些元素(但在我的示例中它只有一个元素)。我必须遍历列表并将每个元素插入 func通过引用函数。

#include <iostream>
#include <map>
#include <algorithm>
#include <list>
#include <string>

typedef struct{
char inf[3];
}data;

std::map<int, data*> mp;
std::list<data> lst;

int func(data& dt){

...
}

int main(){

...
//iterate through list
std::list<data>::const_iterator iterator;

for (iterator = lst.begin(); iterator != lst.end(); ++iterator) {
data param = *iterator;
func(param);
//func(*iterator); // doesn`t work!
}

return 0;
}

问题是:func没有t work with *iterator. Why should I do this: data param = *iterator` 让它工作?谢谢你的帮助!

最佳答案

iterator实际上是一个 const_iterator :

std::list<data>::const_iterator iterator;

但是您尝试将其目标传递给的函数需要一个非常量引用:

int func(data& dt){

A const_iterator不能给你一个非常量引用。您需要使用非常量 std::list<data>::iterator ,或更改函数以使用 const data&范围。从表面上看,似乎没有要求参数是非常量引用。

关于c++ - 通过引用传递迭代器会产生错误 : cannot convert parameter 1 from 'const data' to 'data &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com