我正在尝试执行以下操作:调用一个函数,该函数将引用作为参数而不传递“变量”,只传递值。 我的编译器(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&)
我该怎么办? 为什么不起作用?是否有一些我不理解的概念?
感谢。
答案 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
引用。