gpt4 book ai didi

c++ - Non-Ivalue in assignment 错误

转载 作者:行者123 更新时间:2023-11-30 01:56:32 24 4
gpt4 key购买 nike

我在编译期间两次收到上述错误消息。其他一切正常,即没有其他编译时错误。这是一个简单的二叉树程序,错误来自的函数是交换或镜像函数,旨在简单地交换所有子树。这是函数

template <class dataType>
void swapSubTrees ( BinaryTree <dataType> * bt )
{
if(bt == NULL)
{
//do nothing
}
else
{
swapSubTrees(bt->left());
swapSubTrees(bt->right());
BinaryTree <int> *temp;
temp = bt->left();
bt->left() = bt->right();
bt->right() = temp;
}
}

这是我在 main 中的函数调用(这是我得到两个非左值错误的地方

swapSubTrees (b1);

b1 是从类 BinaryTree 实例化的对象,它位于我的树的顶部。有相应的对象 b2、b3、b4 和 b5,它们是树的其他节点,显然来 self 遗漏的代码。无论如何,我似乎找不到哪里出错了,那可能是什么?任何帮助都会非常感谢!左边的函数看起来像

Template <class dataType>
BinaryTree <dataType> * BinaryTree<dataType> :: left()
{
return leftTree;
}

最佳答案

我猜给出错误的行是:

bt->left() = bt->right();
bt->right() = temp;

?

您不能将这样的函数调用用作表达式的左侧。


将此方法添加到 BinaryTree 模板类中:

template<class dataType>
void BinaryTree<dataType>::swapChildren()
{
BinaryTree *tmp = leftTree;
leftTree = rightTree;
rightTree = tmp;

if (leftTree)
leftTree->swapChildren();
if (rightTree)
rightTree->swapChildren();
}

然后将您的自由函数更改为:

template <class dataType>
void swapSubTrees ( BinaryTree <dataType> * bt )
{
if(bt != NULL)
bt->swapChildren();
}

关于c++ - Non-Ivalue in assignment 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679364/

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