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
函数?