我正在尝试实现链表,我对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;
答案 0 :(得分:5)
如果list->at(i)
有效,则表示list
是指针,而不是对象。因此,list[i]
评估对象。这就是为什么int a = list[i];
不起作用的原因,这也解释了错误信息。您无法使用L1List<int>
初始化int
类型的对象。
您需要使用:
int a = (*list)[i];
或使其变得非常复杂并使用:
int a = list->operator[](i);