我有一个带有对象的基本链表。粗略的结构是这样的:
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()
上,我想更改给定Node
的Something
值。但值不会改变。仍然和以前一样。我正在尝试这样的事情:
void List::updateValues(int v) {
Node* iterator = first;
while(it != NULL) {
it->getSome()->setValue(v);
it = it->getNext();
}
}
但是,每个Something
在每个Node
上的value
不会更改。我知道这是一个指针和引用的问题,但我不完全了解如何解决它。
getSome()
方法返回存储Something
的副本。您的代码仅修改此副本。这可以通过返回并处理引用来修复:
Something& getSome();