Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153

Массивы и перегрузки

30.01.2013, 18:12. Показов 909. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть парочка вопросов.
Как объявить указатель на двумерный массив?
На одномерный в таком виде
C++
1
int *ptr = new int [10];
а с двумерным так не получается.

Как перегрузить индексацию двумерного массива?
Если объявлять прототип так
C++
1
int &operator[] (int, int);
то пишет, что слишком много параметров.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2013, 18:12
Ответы с готовыми решениями:

Должен ли хотя бы один из параметров оператора перегрузки был того же типа, что и тип, в котором этот оператор перегрузки определен
A) В зависимости от перегружаемой операции B) Нет C) Да D) В зависимости от типа, в котором объявлена операция перегрузки

Перегрузки в C#
Нужны были перегрузки в С#, + – объединить списки (list+list);-- – удалить элемент из начала (типа --list);= = – проверка на равенство. Не...

Перегрузки
Помогите пожалуйста написать программу. Описать производный класс, содержащий поле козырь, и функцию, проверяющую кроет ли карта,...

5
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
30.01.2013, 18:22
1) Двойной указатель
C++
1
int ** arr;
либо адресную арифметику юзать
2)
C++
1
int * classname::operator[](int);
0
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
31.01.2013, 11:19  [ТС]
1) А как теперь задать этому двойному указателю двумерный массив с помощью new?
2)У меня возвращаемое значение ссылка на int, у вас это указатель на int. Больше ничего не поменялось. А мне нужно поменять индексацию двумерного массива. То есть в списке параметров должно быть int, int, а у вас только один int.

Добавлено через 8 минут
1)int **arr = new int [5][5]; не работает
2)А в конечном результате я должен обращаться в таком виде arr[5,5], что эквивалентно arr[5][5].
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
31.01.2013, 11:56
1)
C++
1
2
3
4
5
// rows - количество строк, cols - количество столбцов
int **arr;
arr = new int *[rows];
for (int i = 0; i < rows; ++i)
    arr[i] = new int [cols];
2) Когда вы примените оператор индексации к объекту класса - возвратится указатель на массив. Второй оператор индексации применится уже к этому указателю (т.е. применится встроенный в язык оператор индексации) и вернёт конкретный элемент.
2') Вы не можете изменить синтаксис операторов языка. В С++ нет оператора индексации, принимающего два индекса, и при всё желании написать arr[5,5] вы не сможете, вернее, не получите желаемого результата, поскольку сначала выполнится оператор запятая, возвращающая одно-единственное значение, и уже оно будет использовано в качестве индекса.
1
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
31.01.2013, 17:48  [ТС]
Второе задание я взял из самоучителя. При этом самоучитель написан недавно и советовал его очень хороший преподаватель.
Возможно я тогда не правильно понял задание. Вот оно
"Прекрасным примером перегрузки операции вызова функции () является возможность более общей формы двойной индексации массива. Перегрузите операцию вызова функции так, чтобы вместо записи массива в виде
C++
1
chessBoard[row][column]
можно было бы записывать альтернативную форму:
C++
1
chessBoard[row,column]
."
Может быть тут имелось ввиду использование фигурных скобочек?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.02.2013, 09:56
kebal, не фигурных, круглых. Имелся ввиду такой вариант:
C++
1
chessBoard(row, column);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2013, 09:56
Помогаю со студенческими работами здесь

с++ перегрузки
Нужна помощь с реализацией кода(перегрузка добавления элемента в массив) Полная постановка задачи. АТД - множество с элементами типа...

Перегрузки
Помогите пожалуйста!!!! Перегрузку оператора – слева объект, справа другой тип данных вроде сделала, а перегрузку оператора – слева другой...

Перегрузки
Изменить программу предыдущей лабораторной работы. Функцию, определяющую бьет ли первая карта вторую, определить в базовом классе как...

Перегрузки + и ==
Проблема с перегрузкой оператора + (объединение списков). Списки объединяет, но к первому списку прибавляется второй, пытался исправить,...

Перегрузки (operator+)
Прошу помощи не могу понять как сделать реализацию для этого куска Также добавьте operator+ для сложения объекта String с...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru