我正在努力在一些项目停机期间复习我的 C++,并为此创建了一个链接列表项目。在这个项目中,我想在设定的索引处返回当前值。我已经有一种方法可以做到这一点,但想通过运算符重载来解决它。
为此,我进行了必要的研究以复习并创建了以下代码(我不会让每个人都接受我的代码,只会粘贴相关部分):
T& operator[](const int index);
template<class T>
T& LinkedList<T>::operator[](const int index)
{
try
{
if(!isIndexValid(index)) throw ior;
Node<T> *temp = _head;
for(int i=1; i<=index; i++)
{
temp = temp->Next;
}
return temp->Value;
}
catch(exception& e)
{
cout << e.what() << endl;
}
}
在我的主要功能中,我有以下行:
int foo = list[5];
一切对我来说都很好,但是当我编译时出现以下错误:
error C2440: 'initializing' : cannot convert from 'LinkedList<T>' to 'int'
有谁知道如何解决这个问题?
谢谢!
对于那些问过的人,这是 Node 类的定义方式:
template<class T>
class Node
{
public:
Node();
Node(const T value);
T Value;
Node<T> *Prev;
Node<T> *Next;
};
这是我的列表变量的声明:
LinkedList<int> *list = new LinkedList<int>();