2010-03-27 22 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); 
相關問題