gpt4 book ai didi

c++如何将迭代器指针传递给需要引用对象的函数

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:19 24 4
gpt4 key购买 nike

所以在我的主体代码中,我创建了一个迭代器来遍历指向 Point 对象的指针列表,我需要能够将该指针传递给 set_point_one 函数。

list<Point*>::iterator it = on.begin();
l->set_point_one(*it);

set_point_one 函数重载如下:

void set_point_one(const double x, const double y, const double z) { one_.set_xyz(x, y, z); }
void set_point_one(Point &p) { one_.set_xyz(p.get_x(), p.get_y(), p.get_z()); } //trying to get it to use this one

当我运行这段代码时,出现错误:

./facet.cc:79:20: error: no matching member function for call to 'set_point_one'
l->set_point_one(*it); //set both end points of the line to the point
~~~^~~~~~~~~~~~~
./line.cc:21:10: note: candidate function not viable: no known conversion from 'value_type' (aka 'Point *') to 'Point &' for 1st argument; dereference the argument with
*
void set_point_one(Point &p) { one_.set_xyz(p.get_x(), p.get_y(), p.get_z()); }
^
./line.cc:20:10: note: candidate function not viable: requires 3 arguments, but 1 was provided
void set_point_one(const double x, const double y, const double z) { one_.set_xyz(x, y, z); } ^

我试过取消引用,但没有成功。是否有什么明显的我遗漏的东西,或者是我让它工作以进一步重载函数的唯一方法,以便它也显式地接受一个指向对象的指针?

提前致谢

最大

最佳答案

*it 取消引用迭代器,返回对象,它指向。在您的情况下 - Point*

由于您的函数采用Point&,因此您需要再次取消引用它。含义

// not mandatory -v---v
l->set_point_one(*(*it));

关于c++如何将迭代器指针传递给需要引用对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20918518/

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