gpt4 book ai didi

c++ - C++中使用引用的二叉树

转载 作者:太空狗 更新时间:2023-10-29 19:54:56 25 4
gpt4 key购买 nike

我希望使用引用而不是使用指针来实现二叉树(这通常是您在每本书和互联网上的每个网站上都能找到的)。我尝试了以下代码:

class tree_node {
private:
tree_node& left;
tree_node& right;
data_type data;
public:
void set_left(tree_node&);
// ... other functions here
};

void tree_node::set_left(tree_node& new_left) {
this.left = new_left;
}

我收到以下错误:错误 C2582:“operator =”函数在“tree_node”中不可用。

我知道我可以使用指针轻松实现它,但我想让我的解决方案保持优雅且没有指针。你能告诉我哪里出错了吗?

最佳答案

您不能更改引用所指的对象1;一旦你初始化一个引用,它总是引用它被初始化的对象。

你应该使用指针。为此使用指针没有任何问题(使用指针也很干净,因为父节点拥有它们的子节点,所以清理和销毁很容易!)

(1) 好吧,您可以显式调用对象的析构函数,然后在赋值运算符实现中使用 placement new,但这只是一团糟!

关于c++ - C++中使用引用的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843373/

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