将非引用作为引用传递,不带临时变量

发布于 2024-10-22 05:41:35 字数 371 浏览 1 评论 0原文

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

我有:

foo(Vector&,Vector&)

每当我尝试调用 foo(Vector(1,2,3),Vector(4,5,6)) 时,我都会得到没有匹配的函数来调用 foo(Vector,向量);注意:候选人是 foo(Vector&,Vector&)

我该怎么办? 为什么不起作用?有什么概念我不理解吗?

谢谢。

I am trying to do the following: call a function which takes references as parameters without passing "variables", just values.
Shouldn't my compiler(gcc) be able to make temporary "variables" to send in? It would seem that mvc does it, one way or another (other person in project uses it).

I have:

foo(Vector&,Vector&)

Whenever I try to call foo(Vector(1,2,3),Vector(4,5,6)) I get no matching function for call to foo(Vector,Vector); note: candidates are foo(Vector&,Vector&)

What should I do?
Why doesn't it work? Is there some concept I do not comprehend?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

愁以何悠 2024-10-29 05:41:35

Vector(1,2,3) 创建一个临时变量,并且临时变量不能绑定到非常量引用!

因此,将参数 const 设置为:

void foo(const Vector&, const Vector&)

现在它可以工作了!

Vector(1,2,3) creates a temporary, and a temporary cannot be bound to non-const reference!

So make the parameters const as:

void foo(const Vector&, const Vector&)

Now it'll work!

请爱~陌生人 2024-10-29 05:41:35

您需要作为 const 引用传递:

foo(const Vector&,const Vector&)

非常量引用只能绑定到左值,临时不是左值。

You need to pass as const reference:

foo(const Vector&,const Vector&)

non-const references can be bound only to l-values, temporary is not a l-value.

¢蛋碎的人ぎ生 2024-10-29 05:41:35

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

Use const references if you want to pass over temporary variables.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文