2015-11-04 92 views
1

我試圖傳遞錯誤使用按引用傳遞的主要功能,但是當我編譯下面的代碼我得到一個錯誤的錯誤:的一元無效的類型參數「*」(有「詮釋」)

錯誤:一元的無效類型參數 '*'(有 'INT')

主代碼:

main() 
{ 
. 
. 
int error=-1; 
foo(..., error); 
. 
. 
} 

功能代碼:

foo(..., int &error) 
{ 
    if (...) 
     *error = errno; 
} 

errno是系統調用在linux中設置的標準錯誤。

頭文件定義了整數變量errno,它由系統調用和一些庫函數在發生錯誤時設置,以指示出錯的地方。

+3

引用不是指針。一元'*'是指針。 '錯誤'是一個參考。 –

+1

你的foo函數需要一個參考,你把它當作一個指針 – KostasRim

+0

謝謝你指出 – Namitha

回答

1

error沒有指針,你不能用它間接(反引用)操作符operator*

如果你只是想設置的值,改變

*error = errno; 

error = errno; 
+0

謝謝你指出。 – Namitha

+0

我看到一個這樣的例子.. void foo(int&value) { * value = 6; } int main() { int value = 5; cout <<「value =」<< value <<'\ n'; foo(value); cout <<「value =」<< value <<'\ n'; return 0; } 這也會有同樣的問題嗎? – Namitha

+0

@mooli絕對是的。 – songyuanyao

1

在你的foo函數中你使用了一個引用,稍後你將它用作指針。 引用不是指針,所以你的編譯器會引發你一個錯誤。改變函數來接受一個指針。

+0

謝謝你指出 – Namitha

+0

它修復了你的問題嗎? – KostasRim

+0

是的,它確實解決了這個問題。謝謝 – Namitha

相關問題