首页 > 解决方案 > 无法更新作为列表中节点一部分的对象内的值

问题描述

我有一个带有对象的基本链表。粗略的结构是这样的:

class Something {
  public:
    Something();
    ~Something();
    void setValue(int v);

  private:
    int value;
}


class Node {
  public:
    Node();
    ~Node();
    Node* getNext();
    Something getSome();

  private:
    Something some;
    Node *next;
}


class List {
  public:
    List();
    ~List();
    void updateValues(int v);

  private:
    Node* first;
    Node* current;
}

然后,在updateValues()我想更改Something给定的值的方法上Node。但是值没有改变。保持和以前一样。我正在尝试这样的事情:

void List::updateValues(int v) {
  Node* iterator = first;

  while(it != NULL) {
    it->getSome()->setValue(v);
    it = it->getNext();
  }
}

但是,value每个Something上的每个Node都没有改变。我知道这是指针和引用的问题,但我并不完全理解如何解决它。

标签: c++pointersobjectlinked-list

解决方案


您的getSome()方法返回存储的副本Something。您的代码仅修改此副本。这可以通过返回并处理参考来解决:

  Something& getSome();

推荐阅读