我正尝试在C ++中创建一个链接列表,其工作方式类似于列表在用户端在Python中的工作方式。我尝试实现的一项功能是使用[]运算符来引用节点的值,从而使您可以轻松地访问它。
这是我为此编写的成员函数,目前仅充当吸气剂:
int operator [] (int index) {
if (index >= length) { // length is a member variable
throw out_of_range("");
}
IntNode* current = head;
for (int i = 0; i <= index; i++) {
if (current->index == index) {
return current->value;
}
current = current->next;
}
}
我的问题是:有没有一种方法可以使[]运算符既可以用作getter也可以用作setter?
例如在用户端,将使用getter:
int someInt = myList[1];
然后使用setter,例如:
myList[1] = 67;
这当然是假设myList
在索引1处有一个“元素”。
另外,myList
是对List
对象(不是指针)的引用。
注意:我计划在某个时候通过模板使此结构起作用。现在,我只希望它可以使用整数。
答案 0 :(得分:0)
您可以提供可变的和const版本。如果可变版本返回引用,则可以为其分配引用。
int& operator [] (int index);
const int operator [] (int index) const;
我不会说这是一个好想法。试图将链接列表视为数组,尤其是如上所述,并不是很有效。