我已经在C ++中获得了一个类声明(用节点创建一个列表),我需要定义它,并且我遇到了一个成员函数问题:void print() const;
问题:如何在不删除函数声明中的const
的情况下遍历并打印出first-gt;值,即先改变?下面的函数会产生错误:表达式必须是可修改的左值。
类声明(仅相关细节)
class List {
public:
.
.
.
void print() const;
int size();
void add(int d);
private:
int sz = 0;
struct Node {
int value;
Node* next;
Node(int v, Node* n) : value(v), next(n) {}
};
Node* first; // pointer to the first node
};
类定义(仅相关细节)
void List::print() const {
while (first != NULL) {
cout << first->value << endl;
first = first->next;
}
}
int List::size() const {
return sz;
}
void List::add(int d) {
if (size == 0)
first = new Node(d, NULL), sz++;
else {
Node* newnode = new Node(first->value, first->next);
first = new Node(d, newnode);
sz++;
}
}
感谢您的时间
答案 0 :(得分:0)
诀窍是复制first
并仅修改副本:(未测试)
Node* firstCopy = first;
while (firstCopy != NULL) {
cout << firstCopy->value << endl;
firstCopy = firstCopy->next;
}