无法更新属于列表中节点一部分的对象内的值

时间:2018-07-09 14:54:07

标签: c++ pointers object linked-list

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

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的{​​{1}}的值。但是值没有改变。其余部分与以前相同。我正在尝试这样的事情:

Node

但是,每个void List::updateValues(int v) { Node* iterator = first; while(it != NULL) { it->getSome()->setValue(v); it = it->getNext(); } } 上每个value的{​​{1}}都没有改变。我知道这是指针和引用的问题,但是我不完全了解如何解决它。

1 个答案:

答案 0 :(得分:2)

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

  Something& getSome();