gpt4 book ai didi

c++ - 调用函数时对非常量的引用的初始值必须是左值

转载 作者:行者123 更新时间:2023-11-28 05:11:35 25 4
gpt4 key购买 nike

我识别这样的二叉树:

class Btree
{
public:
BtreeNode <T>* root;
...
}

然后我像这样在二叉树类中写一个插入函数:

void Btree<T>::InsertNode2(T data, BtreeNode <T>* &root)
{
if (root==NULL)
{
root = new BtreeNode <T> (data);
//cout << root->data << endl;
return ;
}
if (data <= root->data)
InsertNode2(data, root->leftchild);
else
InsertNode2(data, root->rightchild);
}

当我调用这个函数时:

Btree<int> *tree=new Btree<int>();
tree->InsertNode2(1, tree->root);

没关系。一切正常。

但是如果我编写另一个函数来获取 root:

BtreeNode <T>* GetRoot(){ return this->root; }

当我调用 InsertNode2 时:

Btree<int> *tree=new Btree<int>();
tree->InsertNode2(1, tree->GetRoot());

有一个错误:对非常量的引用的初始值必须是左值。这两种方法有什么区别?如何修改?我希望 root 是私有(private)的。

最佳答案

按值而非引用获取 BtreeNode 指针。例如

void Btree<T>::InsertNode2(T data, BtreeNode <T>* root)

这应该可以解决您的问题。

关于c++ - 调用函数时对非常量的引用的初始值必须是左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43392556/

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