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];
}
*При этом в Вашей структуре данных должно находится что-то, для чего вы будете применять вышеуказанный оператор
Продвижение своими сайтами как стратегия роста и независимости