Я работаю над очисткой моего C++ во время простоя проекта и создал для этого проект Linked List. В этом проекте я хотел бы вернуть текущее значение по заданному индексу. У меня уже есть способ сделать это, но вы хотите работать с перегрузкой оператора.Перегрузка оператора подписки на 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>();
В какую строку относится ошибка? Кроме того, как объявляется «список»? –
Я бы предпочел, чтобы параметр 'operator []' имел тип 'size_t', а не' int'. –
Каково определение переменной 'list'? Где вы называете строку 'int foo = list [5];'? И почему ваша функция ничего не возвращает, если исключение было поймано? Кроме того, 'count' ваш псевдоним для' cout'? :) – podkova