这是该函数的原型:
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);
不会报告任何错误。
我想知道为什么要直接使用函数返回值作为参数吗?
非常感谢!
答案 0 :(得分:2)
insert
函数的最后一个参数是对指针的非常量引用。在通话中:
insert(x, y, ++level, cur->getLeftChild());
最后一个参数是TreeNode *
类型的临时值,不能绑定到TreeNode * &
。您可以找到很好的解释here