C++ 链表列表运算符[]

c++ linkedlist list operator[]

本文关键字:运算符 列表 链表 C++      更新时间:2023-10-16

>我正在尝试实现链接列表,但我对运算符[] 有一些问题

template <class T>
T& L1List<T>::at(int i){
L1Item<T> * pRet = this->_pHead;
int idx = 0;
while(pRet){
if(i != idx){
pRet = pRet->pNext;
idx++;
}else  return (pRet->data);
}
}

template <class T>
T& L1List<T>::operator[](int i){
return at(i);
}

当我编译它时,它使用 list->at(i( 运行,但 list[i]。 int a = 列表[i];错误是"无法在初始化时将 L1List'<'int> 转换为'int'

如果list->at(i)有效,则意味着list是一个指针,而不是一个对象。因此,list[i]计算对象。这就是int a = list[i];不起作用的原因,这也解释了错误消息。不能使用L1List<int>初始化类型int的对象。

您需要使用:

int a = (*list)[i];

或者让它变得非常复杂并使用:

int a = list->operator[](i);