2013-09-24 112 views
0

這裏需要的問題:我試圖做的,包裝函數的遞歸函數是「按引用傳遞」值

Node* foo(Node *& ptr, other args) { 
    // some work here 
} 

在包裝功能,我不得不宣佈臨時值(這是無意義的):

Node* wrapper(...) { 
    Node* p = nullptr; 
    return foo(p, other args); 
} 

有沒有什麼辦法擺脫包裝函數的第一行?謝謝!!

+0

你可以改變'foo'的簽名嗎?看起來'Node *&ptr'根本就沒有必要。 (另外,如果提供更多信息,問題可能會有更好的答案,比如'wrapper'正在做什麼) –

+0

爲什麼你必須聲明臨時值?另外,你不能只將p作爲參數傳遞給包裝函數。 – krammer

回答

1

我想在foo你指定ptr一些值(否則*&沒有值)。你不能通過nullptr,你必須聲明一個像你在wrapper中顯示的指針,因爲nullptr是一個右值。一個右值是一個表達式,或者一個「未命名的對象」,你不能把它的地址。這裏有更多的信息Why don't rvalues have an address?