Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;链表错误:赋值的左操作数需要左值 P> >我想用C++编写一个处理双链表的程序。具体而言,该列表包含一组艺术品对象作为其节点。在这个特定的函数中,我试图通过“sell”命令删除节点,但在几行代码中出现了这个错误:_C++_Linked List - Fatal编程技术网

C++;链表错误:赋值的左操作数需要左值 P> >我想用C++编写一个处理双链表的程序。具体而言,该列表包含一组艺术品对象作为其节点。在这个特定的函数中,我试图通过“sell”命令删除节点,但在几行代码中出现了这个错误:

C++;链表错误:赋值的左操作数需要左值 P> >我想用C++编写一个处理双链表的程序。具体而言,该列表包含一组艺术品对象作为其节点。在这个特定的函数中,我试图通过“sell”命令删除节点,但在几行代码中出现了这个错误:,c++,linked-list,C++,Linked List,错误:赋值的左操作数需要左值 我做了研究,发现当你试图赋值时,如果你真的想比较它们,或者如果你试图给一个常数赋值时,这种类型的错误通常会出现。然而,我不认为这是我的问题。以下是问题代码: // Sell At Function: This function sells the specified artwork. void CR_ArtCollection::sell_at(string title, ostream& log) { CR_ArtWorks* walker = f

错误:赋值的左操作数需要左值

我做了研究,发现当你试图赋值时,如果你真的想比较它们,或者如果你试图给一个常数赋值时,这种类型的错误通常会出现。然而,我不认为这是我的问题。以下是问题代码:

// 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\u prev
get\u next
返回r-values。这意味着您不能分配给他们

检查您的界面是否有类似于
set_next
set_prev
的方法,并将其称为:

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

正如名称所示-
get_xxxx
,这些方法存在,因此您可以获取值,而不是设置值。

好的,如果函数返回一个基元类型,如整数或指针,则将其指定给函数的结果是不合法的。这就是你的错误

一种可能是更改get_prev和get_next函数以返回对指针的引用


但我不建议你这么做。您的代码显然需要重新设计。您应该在链表类中添加一个擦除函数。这样,指针操作代码将位于它所属的CR_ArtWorks类中,而不是不属于它的CR_ArtCollection类中。

您至少可以说编译器在抱怨哪一行吗?@CliftonRoberts所以您实际上拥有了
set_prev
set_next
函数?