为什么不能在插入函数调用中直接使用返回的指针作为参数?

时间:2019-04-15 12:24:41

标签: c++ pointers data-structures function-parameter

这是该函数的原型:

void BinaryDimonTree::insert(int x, int y, int level, TreeNode *&cur)

在函数中,我尝试调用:

insert(x, y, ++level, cur->getLeftChild());

这是getLeftChild

TreeNode* TreeNode::getLeftChild() const {
    return this->left;
}

然后,它报告一个错误:

  

没有重载函数“ BinaryDimonTree :: insert”的实例与参数列表匹配-参数类型为:(int,int,int,TreeNode *)

如果我这样更改代码:

TreeNode *child = cur->getLeftChild();
insert(x, y, ++level, child);

不会报告任何错误。

我想知道为什么要直接使用函数返回值作为参数吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

insert函数的最后一个参数是对指针的非常量引用。在通话中:

insert(x, y, ++level, cur->getLeftChild());

最后一个参数是TreeNode *类型的临时值,不能绑定到TreeNode * &。您可以找到很好的解释here