给定这两个函数声明:
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/