我正在尝试实现一个简单的LinkedList 以下代码产生此错误:
error: lvalue required as left operand of assignment
该行是:
newNode->getNext() = _head;
getNext()
返回Node*
的位置,我正在尝试在更新之前在当前头部创建新的Node
点。
我可能正在考虑使用Java并且过渡错误。
答案 0 :(得分:4)
由于您正在实施该类,因此您有以下几种选择:
setNext(Node*)
方法(可能为private
)并使用newNode.setNext(_head)
; _next
成员:newNode._next = _head
; _next
的初始值作为参数,并在构造_head
时传递newNode
。由于你没有发布你的代码,我猜了一下“下一个”指针的名称并称之为_next
。此外,上述第1-3点并非相互排斥,并非唯一的可能性。
P.S。如果您不确定“左值”和“右值”是什么意思,请查看C FAQ。
答案 1 :(得分:2)
要么取消引用:
Node* Node::getNext();
*(newNode->getNext()) = _head;
(假设_head
的类型为Node
且赋值运算符在Node
中小心实现,或者可能更好
Node& Node::getNext();
newNode->getNext() = _head;
但无论如何,这不是你应该这样做的方式。您可能想要实现一个setter。
另外,您是否考虑过使用std::list
而不是重新发明轮子?
答案 2 :(得分:0)
你正在左侧放置一个函数调用,这是你真的不能做的。你确定你不是故意的......
_head = newNode->getNext();
答案 3 :(得分:0)
您需要在'='符号的左侧指定要分配的变量。
_head = newNode->getNext();
再次阅读后,它并没有真正达到你想要的效果。我建议实现一个“setNext”函数,它将一个节点作为一个参数,或者直接访问“next”变量。 newNode.next = _head;例如。