C 链接列表错误:lvalue作为分配的左操作数所需

C++ Linked List Error: lvalue required as left operand of assignment

本文关键字:分配 操作数 列表 链接 错误 lvalue      更新时间:2023-10-16

好吧,我正在尝试在C 中编写一个涉及双连锁列表的程序。具体而言,该列表包含艺术品对象作为节点的集合。在此特定功能中,我正在尝试通过" sell"命令删除节点,但是我在几行上遇到了此错误:

错误:lVALUE是分配的左操作数

所需的

我已经完成了研究,发现当您实际想比较它们时尝试分配值时,或者您尝试将值分配给常数时,通常会出现这种错误。但是,我认为这不是我的问题。这是问题代码:

// Sell At Function: This function sells the specified artwork.
void CR_ArtCollection::sell_at(string title, ostream& log)
{
    CR_ArtWorks* walker = first;
    while(walker != NULL)
    {
        if(title == walker->get_title())
        {
            walker->get_next()->get_prev() = walker->get_prev(); // Error
            walker->get_prev()->get_next() = walker->get_next(); // Error
            delete walker;
            walker = NULL;
        }
        else walker = walker->get_next();
    }
}

如果有人可以将我指向正确的方向,我会非常感谢。

这很明显- get_prevget_next返回 r -values 。这意味着您无法分配给他们。

检查您的接口是否类似于set_nextset_prev的方法,并将其称为:

walker->get_next()->set_prev(walker->get_prev());
walker->get_prev()->set_next(walker->get_next());

正如名称所暗示的- get_xxxx,这些方法在那里,因此您可以 get 值,也不能设置它们。

好的,如果函数返回原始类型(例如整数或指针),则分配给函数的结果是不合法的。那就是您的错误。

一种可能性是更改您的get_prev和get_next函数以返回指针。

,但我不建议您这样做。您的代码显然需要重新设计。您应该在链接的列表类中添加擦除功能。这样,指针操作代码将在其属于的CR_ARTWORKS类中,而不是cr_artcollection类。