C 链接列表错误:lvalue作为分配的左操作数所需
C++ Linked List Error: lvalue required as left operand of assignment
好吧,我正在尝试在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_prev
和 get_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 值,也不能设置它们。
好的,如果函数返回原始类型(例如整数或指针),则分配给函数的结果是不合法的。那就是您的错误。
一种可能性是更改您的get_prev和get_next函数以返回指针。
,但我不建议您这样做。您的代码显然需要重新设计。您应该在链接的列表类中添加擦除功能。这样,指针操作代码将在其属于的CR_ARTWORKS类中,而不是cr_artcollection类。
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 控制允许动态运行c++的并发操作数
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- 分配C 数组的左操作数所需的LVALUE
- 我会遇到一个错误:作为左派分配的操作数所需的lvalue
- 当分配运算符的操作数左操作数时,为什么数组名称不腐烂到指针
- 分配C 的左操作数所需的LVALUE
- C 链接列表错误:lvalue作为分配的左操作数所需