分配给函数调用返回的指针

时间:2011-09-14 16:26:51

标签: c++ pointers linked-list variable-assignment

我正在尝试实现一个简单的LinkedList 以下代码产生此错误:

error: lvalue required as left operand of assignment

该行是:

newNode->getNext() = _head;

getNext()返回Node*的位置,我正在尝试在更新之前在当前头部创建新的Node点。 我可能正在考虑使用Java并且过渡错误。

4 个答案:

答案 0 :(得分:4)

由于您正在实施该类,因此您有以下几种选择:

  1. 实施setNext(Node*)方法(可能为private)并使用newNode.setNext(_head);
  2. 直接分配给节点的_next成员:newNode._next = _head;
  3. make Node的构造函数将_next的初始值作为参数,并在构造_head时传递newNode
  4. 由于你没有发布你的代码,我猜了一下“下一个”指针的名称并称之为_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;例如。