为什么gcc不会将类声明编译为引用参数?

时间:2010-03-27 19:27:13

标签: c++ xcode gcc reference arguments

这在Visual Studio中编译得很好,但为什么不在XCode?

class A()
{};

someMethod(A& a);

someMethod(A()); //error: no matching function call in XCode only :(  

这是不好的形式? 每次都要编写以下代码似乎很烦人:

A a;
someMethod(a);  //successful compile on Xcode

我错过了什么吗?我不是很有经验,所以谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

您不能将临时绑定到非const引用。如果您更改函数以获取const引用,它将起作用:

someMethod(const A& a);

此外,

A a();

不声明局部变量。它声明了一个名为a的函数,该函数不接受任何参数并返回类型为A的对象。你的意思是:

A a;

答案 1 :(得分:0)

为了传递对rvalues(隐式获取引用)的引用,就像它在someMethod(A())中所做的那样,你需要常量引用。因此,有效声明(包括正确的语法)是

void someMethod(const A& a);