2013-09-24 34 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?