gpt4 book ai didi

c++ - 在 C++ 中传递参数的行为不一致

转载 作者:行者123 更新时间:2023-11-30 02:51:51 28 4
gpt4 key购买 nike

给定这两个函数声明:

void initialize(int p, std::vector<Vector3> &);
std::vector<Vector3> toNurbsCoords(std::vector<Vector3>);

为什么会这样

Nurbs nurbs;
std::vector<Vector3> pts = nurbs.toNurbsCoords(points);
nurbs.initialize(degree, pts);

虽然这会引发编译时错误?

Nurbs nurbs;    
nurbs.initialize(degree, nurbs.toNurbsCoords(points));
//error: no matching function for call to 'Nurbs::initialize(int&, std::vector<Vector3>)'

最佳答案

因为临时不能绑定(bind)到非const 引用。

nurbs.toNurbsCoords(points) 是临时的。在第一种情况下,您使用它初始化命名对象 - pts - 并传递它。在第二种情况下,您只需传递温度即可。

关于c++ - 在 C++ 中传递参数的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423448/

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