Перегрузка оператора[] C++

134
05 декабря 2020, 22:00
class LinkedList{
public:
    int* operator[](const int i)
        {
            int *p = new int(i);
            return p;
        }
};
int main()
{
LinkedList *ptr = new LinkedList();
int* p = ptr[0];
}

Не компилируется, выдает ошибку: Невозможно преобразовать сущность LinkedList в int, где я неправильно перегружаю оператор?

Answer 1

Оператор [] вы перегружали для типа LinkedList. Переменная ptr имеет тип LinkedList * и выражение ptr[0] применяет [] к типу LinkedList *. LinkedList и LinkedList * - два разных типа.

В ptr[0] будет использоваться встроенный оператор [], который не имеет никакого отношения к вашему перегруженному оператору [].

Ваш перегруженный [] будет использоваться, например, в выражении (*ptr)[0].

Answer 2

Вы ведь просто передаете int i и пытаетесь вернуть это же i, которое является типом int, а не указателем на int (int*), как указано в Вашем операторе.
Перегрузка такого оператора выглядит примерно так.

ReturnType& operator[](int index) const 
{
    return someArray[index];
}

*При этом в Вашей структуре данных должно находится что-то, для чего вы будете применять вышеуказанный оператор

READ ALSO
Run-Time Check Failure #2 - Stack around the variable 'Opad' was corrupted

Run-Time Check Failure #2 - Stack around the variable 'Opad' was corrupted

Дан текст, среди символов которого имеется пробелГруппа символов, предшествующая первому пробелу, представляет собой русское слово (существительное...

125
Air Datepicker: получить диапазон даты в строке URL

Air Datepicker: получить диапазон даты в строке URL

jQuery календарь Air DatepickerВ коде предлагаю способ получения диапазона даты в строке URL

121
SVG анимация текста и линий

SVG анимация текста и линий

Как можно сделать анимацию рисования линии от верха к первому тексту, затем появления текста и также с остальными линиями и текстом?

127
Media запросы работают не корректно

Media запросы работают не корректно

Верстаю одностраничник, пытаюсь адаптировать под мобильные устройства

129