2010-03-27 49 views
2

这在Visual Studio中编译得很好,但为什么不在XCode中呢?为什么gcc不会将类声明编译为引用参数?

class A() 
{}; 

someMethod(A& a); 

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

这是不好的形式? 似乎恼人的有以下每次写:

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

我这么想吗?我不是很有经验,所以谢谢你的帮助!

+5

所有的微软特定扩展造成的痛苦......它太多了。 – 2010-03-27 19:31:35

回答

4

您不能将临时绑定到非const引用。如果你改变了函数取一个const引用它的工作:

someMethod(const A& a); 

此外,

A a(); 

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

A a; 
+0

感谢您的回复和更正!^_ ^ – Jorge 2010-03-27 19:33:41

0

对于传递引用右值(其中隐式地获得参考)像它在someMethod(A())做了,你需要经常提到。有效的声明(包括正确的语法)因此是

void someMethod(const A& a); 
相关问题