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

Why cannot I directly use returned pointer as parameter in function call of insert?

本文关键字:返回 指针 参数 不能 插入 函数调用 为什么      更新时间:2023-10-16

这是函数的原型:

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);

不会报告任何错误。

我想知道为什么会出现这个问题,如果我想直接使用函数返回值作为参数,如何解决?

多谢!

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

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

最后一个参数是TreeNode *类型的临时值,无法绑定到TreeNode * &。你可以在这里找到一个很好的解释