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, где я неправильно перегружаю оператор?
Оператор []
вы перегружали для типа LinkedList
. Переменная ptr
имеет тип LinkedList *
и выражение ptr[0]
применяет []
к типу LinkedList *
. LinkedList
и LinkedList *
- два разных типа.
В ptr[0]
будет использоваться встроенный оператор []
, который не имеет никакого отношения к вашему перегруженному оператору []
.
Ваш перегруженный []
будет использоваться, например, в выражении (*ptr)[0]
.
Вы ведь просто передаете int i
и пытаетесь вернуть это же i
, которое является типом int
, а не указателем на int (int*
), как указано в Вашем операторе.
Перегрузка такого оператора выглядит примерно так.
ReturnType& operator[](int index) const
{
return someArray[index];
}
*При этом в Вашей структуре данных должно находится что-то, для чего вы будете применять вышеуказанный оператор
Виртуальный выделенный сервер (VDS) становится отличным выбором
Дан текст, среди символов которого имеется пробелГруппа символов, предшествующая первому пробелу, представляет собой русское слово (существительное...
jQuery календарь Air DatepickerВ коде предлагаю способ получения диапазона даты в строке URL
Как можно сделать анимацию рисования линии от верха к первому тексту, затем появления текста и также с остальными линиями и текстом?
Верстаю одностраничник, пытаюсь адаптировать под мобильные устройства