Перегрузка оператора [] для LinkedList C++
Всем привет, дали задание перегрузить оператор [] для списка, т.е. при написании:
std::cout << list[1] << std::endl;
будет выводится первый элемент из списка.
// list.h
#pragma once
class Node {
public:
int data;
Node* next;
Node();
Node(int);
};
class List {
private:
Node* head;
public:
List();
void add(int);
void print();
void getIndex(size_t);
};
int operator[] (const int index);
Реализация перегрузки должна проходить через getIndex().
Реализация list.cpp
#include <iostream>
#include "list.h"
Node::Node() : data{ 0 }, next{ NULL } { }
Node::Node(int d) : data{ d }, next{ NULL } { }
List::List() : head{ NULL } { }
void List::add(int data) {
if (head == NULL) { // empty list - first node
head = new Node(data);
}
else {
// looking for end (last node has NULL for next):
Node* tmp = head;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = new Node(data);
}
}
void List::print() {
if (head == NULL) { // empty list
std::cout << "empty list\n";
}
else {
Node* tmp = head;
while (tmp != NULL) {
std::cout << tmp->data << " ";
tmp = tmp->next;
}
std::cout << "\n";
}
}
void List::getIndex(size_t index) {
Node* tmp = head;
for (int i = 1; i <= index; i++)
{
tmp->data;
if (i == index)
{
std::cout << tmp->data << std::endl;
}
if ((tmp->data) == NULL)
{
std::cout << -1 << std::endl;
break;
}
tmp = tmp->next;
}
}
int operator[] (const int index)
{
return this->getIndex(index);
}
Главный файл
#include <iostream>
#include "list.h"
int main()
{
std::cout << "Linked List!\n";
List list; // create (empty) list
list.print();
list.add(10);
list.add(20);
list.add(15);
list.print();
std::cout << std::endl;
list.getIndex(1);
list.getIndex(2);
}
Помогите разобраться как будет правильно перегрузить этот оператор