包装函数的递归函数是“按引用传递”值
问题描述:
这里需要的问题:我试图做的,包装函数的递归函数是“按引用传递”值
Node* foo(Node *& ptr, other args) {
// some work here
}
在包装功能,我不得不宣布临时值(这是无意义的):
Node* wrapper(...) {
Node* p = nullptr;
return foo(p, other args);
}
有没有什么办法摆脱包装函数的第一行?谢谢!!
答
我想在foo
你指定ptr
一些值(否则*&
没有值)。你不能通过nullptr
,你必须声明一个像你在wrapper
中显示的指针,因为nullptr
是一个右值。一个右值是一个表达式,或者一个“未命名的对象”,你不能把它的地址。这里有更多的信息Why don't rvalues have an address?。
你可以改变'foo'的签名吗?看起来'Node *&ptr'根本就没有必要。 (另外,如果提供更多信息,问题可能会有更好的答案,比如'wrapper'正在做什么) –
为什么你必须声明临时值?另外,你不能只将p作为参数传递给包装函数。 – krammer