参数传递错误

时间:2012-02-08 18:50:30

标签: c++

我做了这样的功能:

void function(Objectx &x);

我将这个函数称为:

Objectx o;
function(o);

在同一个班级。

当我编译它时,我得到了这个:

error: no matching function for call to ‘function(Objectx)’
note: candidate is: void function (Objectx&)

对不起,如果是一个蹩脚的问题,但我没有在任何地方找到解决方案。你有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我认为您没有显示导致错误的真实代码。 (首先,所谓的代码有Obectx,错误代表Objectx

如果传递临时值(rvalue),则会发生该错误,因为非const引用无法绑定到右值。

如果该功能未更改其参数,请将签名更改为:

void function(const Objectx &x);

如果函数确实更改了其参数,则需要将临时值存储到变量中,并传递变量。这样,函数所做的任何更改都会在调用后可以访问的变量中结束。