C++ - 表达式必须是可修改的左值?

C++ - expression must be a modifiable lvalue?

所以我现在正在实施 BST,并且正在尝试编写后继函数。这就是我现在拥有的:

int BinarySearchTree::TREE_SUCCESSOR(node* x)
{

node* y = NULL;

if (x->right != NULL)
{
    return FIND_MIN(x->right);
}
else
{
    y = x->parent; 
    while (y != NULL && x = y->right)
    {
        x = y;
        y = y->parent;
    }
    return y->key; 
}
} 

但是在这一行:

while (y != NULL && x = y->right)

我在 y 上收到此错误:

Expression must be a modifiable lvalue

为什么会出现此错误?

任何帮助将不胜感激,谢谢!!

看来你的意思如下

while (y != NULL && x == y->right)
                     ^^^

至于错误消息的含义,那么当你使用赋值运算符时,它的优先级低于相等和逻辑运算符的优先级,你实际上有

while ( ( y != NULL && x ) = y->right)

考虑到y的声明放在else语句的代码块中会好很多,因为它只在这个范围内使用

//...
else
{
    node* y = x->parent;