gpt4 book ai didi

C++ 没有已知的参数 1 从 ‘Node*’ 到 ‘Node*&’ 的转换

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:06 24 4
gpt4 key购买 nike

我正在尝试使用递归函数将节点插入到二叉搜索树中。但是,当我尝试调用我的函数时,我收到错误消息

no known conversion for argument 1 from ‘Node*’ to ‘Node*&’

这是递归函数的代码和调用它的函数:

bool BST::add(int data)
{
if (root == NULL)
{
Node* gnu = new Node(data);
root = gnu;
return true;
}
return recursiveAdd(root, data);
}

bool BST::recursiveAdd(Node*& start, int data)
{
if (start == NULL)
{
Node* gnu = new Node(data);
start = gnu;
return true;
}
if (data < start->getData())
{
return recursiveAdd(start->getLeft(), data);
}
if (data > start->getData())
{
return recursiveAdd(start->getRight(), data);
}
if (data == start->getData())
{
return false;
}
return false;
}

以下是我的 Node 类中的 getLeft()、getRight() 和 getData() 函数:

 int Node::getData()
{
return data;
}

Node* Node::getLeft()
{
return leftChild;
}

Node* Node::getRight()
{
return rightChild;
}

如果有人能告诉我我需要修复什么才能正常工作,我将不胜感激。

谢谢!

最佳答案

您不能将临时变量(getLeft 和 getRight 返回的拷贝)与非常量左值引用绑定(bind),因此会出现错误。

无论如何您都不需要修改指针本身。我建议您重写算法以在没有这种相当奇怪且容易出错的要求的情况下工作。

关于C++ 没有已知的参数 1 从 ‘Node*’ 到 ‘Node*&’ 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com