【发布时间】:2020-07-12 03:48:53
【问题描述】:
虽然我理解迭代器和寻址等,但显然不是。请参阅下面的代码,这纯粹是一个示例。
我需要能够通过指针传递或将 mystructs 的每个结构引用到 MyFunc()。该函数应该能够更新传递的实际结构,而不是通过副本或值。
我收到编译器错误:
error: cannot convert 'MY_STRUCT' to 'MY_STRUCT*' for argument '1' to 'void MyFunc(MY_STRUCT*)'
如果我只是传递迭代器地址,这也行不通。
这样做的正确方法是什么。提前致谢。
typedef struct
{
int var1;
int var2;
std::string name;
}MY_STRUCT;
std::list<MY_STRUCT> mystructs;
void MyFunc(MY_STRUCT*)
{
// Do something
}
// populate the list with structs etc.. not included here
//.....
for (std::list<MY_STRUCT>::iterator it = mystructs.begin();it != mystructs.end(); ++it)
{
MyFunc(*it);
}
【问题讨论】:
-
离题但是...
it != mystructs.begin()应该是it != mystructs.end()。 -
@G.M.你是对的谢谢..纠正它
标签: c++ iterator parameter-passing pass-by-reference pass-by-pointer