我做了这样的功能:
void function(Objectx &x);
我将这个函数称为:
Objectx o;
function(o);
在同一个班级。
当我编译它时,我得到了这个:
error: no matching function for call to ‘function(Objectx)’
note: candidate is: void function (Objectx&)
对不起,如果是一个蹩脚的问题,但我没有在任何地方找到解决方案。你有什么建议吗?
答案 0 :(得分:3)
我认为您没有显示导致错误的真实代码。 (首先,所谓的代码有Obectx
,错误代表Objectx
)
如果传递临时值(rvalue),则会发生该错误,因为非const
引用无法绑定到右值。
如果该功能未更改其参数,请将签名更改为:
void function(const Objectx &x);
如果函数确实更改了其参数,则需要将临时值存储到变量中,并传递变量。这样,函数所做的任何更改都会在调用后可以访问的变量中结束。