c ++ linkedlist list operator []

时间:2018-05-31 05:05:15

标签: c++ operators

我正在尝试实现链表,我对operator []

有一些问题
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-&gt; at(i),但是list [i]。 int a = list [i];错误是&#34;无法转换L1List&#39;&lt;&#39; int&gt;初始化中的'int'&#34;

1 个答案:

答案 0 :(得分:5)

如果list->at(i)有效,则表示list是指针,而不是对象。因此,list[i]评估对象。这就是为什么int a = list[i];不起作用的原因,这也解释了错误信息。您无法使用L1List<int>初始化int类型的对象。

您需要使用:

int a = (*list)[i];

或使其变得非常复杂并使用:

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