这在Visual Studio中编译得很好,但为什么不在XCode? p>
class A()
{};
someMethod(A& a);
someMethod(A()); //error: no matching function call in XCode only :(
这是不好的形式? 每次都要编写以下代码似乎很烦人:
A a;
someMethod(a); //successful compile on Xcode
我错过了什么吗?我不是很有经验,所以谢谢你的帮助!
答案 0 :(得分:4)
您不能将临时绑定到非const引用。如果您更改函数以获取const引用,它将起作用:
someMethod(const A& a);
此外,
A a();
不声明局部变量。它声明了一个名为a
的函数,该函数不接受任何参数并返回类型为A
的对象。你的意思是:
A a;
答案 1 :(得分:0)
为了传递对rvalues(隐式获取引用)的引用,就像它在someMethod(A())
中所做的那样,你需要常量引用。因此,有效声明(包括正确的语法)是
void someMethod(const A& a);