传递非引用作为引用,没有临时变量

时间:2011-03-15 16:34:35

标签: c++ gcc reference

我正在尝试执行以下操作:调用一个函数,该函数将引用作为参数而不传递“变量”,只传递值。 我的编译器(gcc)不应该能够发送临时“变量”吗?似乎mvc以这样或那样的方式做到了(项目中的其他人使用它)。

我有:

foo(Vector&,Vector&)

每当我尝试拨打foo(Vector(1,2,3),Vector(4,5,6))时,我都会no matching function for call to foo(Vector,Vector); note: candidates are foo(Vector&,Vector&)

我该怎么办? 为什么不起作用?是否有一些我不理解的概念?

感谢。

3 个答案:

答案 0 :(得分:4)

Vector(1,2,3)创建一个临时的,暂时不能绑定到非const 引用!

所以将参数const设为:

void foo(const Vector&, const Vector&)

现在它会起作用!

答案 1 :(得分:3)

你需要作为const引用传递:

foo(const Vector&,const Vector&)

非const引用只能绑定到l值,temporary不是l值。

答案 2 :(得分:1)

如果要传递临时变量,请使用const引用。