2014-02-23 94 views
0

在以下代碼中,_myFoo是對Foo類型對象的常量引用。在C++中返回const引用

struct Foo 
{ 
}; 

const Foo& _myFoo(); 

const Foo& GetMyFoo() 
{ 
    return _myFoo; 
} 

當我嘗試編譯它,我得到以下錯誤:

error: invalid initialization of reference of type 'const Foo&' 
from expression of type 'const Foo& (*)()' 

我在做什麼錯?是否有某種方式通過函數調用返回_myFoo?

+1

調用'_myFoo'時忘記了括號# – Brian

+0

'_myFoo'是一個像GetMyFoo一樣的函數,並且使用了一個保留的標識符。 – chris

回答

5

_myFoo不是一個變量,它是一個返回const Foo&並且不帶參數的函數。要麼改變_myFoo的聲明(並且可能把它放在struct Foo中),要麼返回_myFoo();並給_myFoo一個定義。

請注意,如果myFoo確實應該是一個函數,你不應該用下劃線作爲前綴,因爲我相信以下劃線開頭的函數名是保留的。

+1

這不是特別的函數名稱,而是全局名稱。函數內部或函數中聲明的函數具有前導下劃線「很好」,「很好」是它不是特別流行的*風格。 – chris

+0

Doh!對初學者問題抱歉。謝謝您的幫助。 – INB