我有一个带有对象的基本链表。粗略的结构是这样的:
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}}都没有改变。我知道这是指针和引用的问题,但是我不完全了解如何解决它。
答案 0 :(得分:2)
您的getSome()
方法返回存储的Something
的副本。您的代码仅修改此副本。可以通过返回并处理 reference 来解决此问题:
Something& getSome();