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];
}
*При этом в Вашей структуре данных должно находится что-то, для чего вы будете применять вышеуказанный оператор
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Дан текст, среди символов которого имеется пробелГруппа символов, предшествующая первому пробелу, представляет собой русское слово (существительное...
jQuery календарь Air DatepickerВ коде предлагаю способ получения диапазона даты в строке URL
Как можно сделать анимацию рисования линии от верха к первому тексту, затем появления текста и также с остальными линиями и текстом?
Верстаю одностраничник, пытаюсь адаптировать под мобильные устройства