Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
1

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

19.03.2017, 11:34. Просмотров 129. Ответов 8
Метки нет (Все метки)

Всем привет! Как можно перегрузить оператор [] так, чтобы к нему можно было обращаться так:
class_arr[i] = 5;
Где class_arr - переменная типа класса массива, а class_arr[i], соответственно, ее элемент?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2017, 11:34
Ответы с готовыми решениями:

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не...

Перегрузка оператора ^
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования...

Перегрузка оператора +
Написал для перегрузки оператора + class BoolMatrix { private: int feet; ...

Перегрузка оператора >
Добрый день! #include <stdio.h> #include <tchar.h> #include <iostream> ...

Перегрузка оператора
Не могу разобратся с перегрузками, помогите пожалуйста ребята Дать определение...

8
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
19.03.2017, 11:44 2
Unicorn_666, ты на посты внимание обращай: Не могу понять, где ошибка. lvalue required as left operand of assignment
У тебя в классе память выделяется не под массив, а под один объект.
0
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
19.03.2017, 13:51  [ТС] 3
Там же второй конструктор есть. В первом, наверное, должно быть new int[0]. У меня проблема в том, что в задаче надо, чтоб программа могла делать так: class_arr[i] = 5; , а оператор [] вроде как должен возвращать ссылку. Т.е. из-за условия я не могу сделать так: *(claass_arr[i]) = 5
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
19.03.2017, 13:57 4
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
Там же второй конструктор есть.
И что? Там то же самое.
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
В первом, наверное, должно быть new int[0].
Это выделение памяти размером 0. И для чего такое может быть нужно?
Добавлено через 1 минуту
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
У меня проблема в том,
У тебя проблем больше, чем ты думаешь. Сначала память научись правильно выделять.
0
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
19.03.2017, 14:04  [ТС] 5
Так должно быть?
C++
1
2
3
4
5
6
ReversedArray(int n){
 
        arr = new int[n];
        sz = n;
 
    }
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
19.03.2017, 14:07 6
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
Так должно быть?
Так, и не в одном месте.
1
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
19.03.2017, 14:16  [ТС] 7
Спасибо, исправил. А что можно с этим сделать?
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
У меня проблема в том, что в задаче надо, чтоб программа могла делать так: class_arr[i] = 5; , а оператор [] вроде как должен возвращать ссылку. Т.е. из-за условия я не могу сделать так: *(claass_arr[i]) = 5
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
19.03.2017, 14:18 8
C++
1
2
3
int& operator [] (int pos) {
     return arr[pos];
}
1
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
19.03.2017, 14:20  [ТС] 9
Спасибо большое!
0
19.03.2017, 14:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2017, 14:20

Перегрузка оператора <<
Есть такой код. class matrix { public: ......; const double*...

Перегрузка оператора ==
Пытаюсь перегрузить оператор == . Делаю так: В классе: class cData // класс...

Перегрузка оператора +
Не могу заставить работать перегруженный оператор + в функции CMoveByVector ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru