我有一个问题是获取对int的引用(来自一组int,QList)。但我需要调用另一个使用call-by-value的函数的值。
int my_var = collection[i];
nextFunction(my_var); --> ERROR no matching function ... (int&) ...
如何从此引用获取值或转换它?
我要调用的函数的签名如下所示:
nextFunction(int id, ...);
它实际上是一个构造函数。
答案 0 :(得分:1)
如果您只想将值传递给nextFunction,则需要在方法中添加一个const
nextFunction(double& par);
会导致您的错误。
nextFunction(const double& par);
或
nextFunction(double par);
会导致自动转换。 所以,如果你真的希望在nextFunction中更改par,你需要
nextFunction(int& par);
答案 1 :(得分:0)
我认为您的问题不同于将引用转换为值。即使函数使用按值调用方法,它也会很乐意使用引用变量。我在visual studio上试过这个并且工作正常。
在函数调用期间,编译器通常会对params进行类型检查。我想你应该看看集合[i]返回的值的类型。 您的编译器错误表明存在类型不匹配。我不认为它与按值调用和通过引用调用有任何关系。