Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153
#1

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

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

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

Как перегрузить индексацию двумерного массива?
Если объявлять прототип так
C++
1
int &operator[] (int, int);
то пишет, что слишком много параметров.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 18:12     Массивы и перегрузки
Посмотрите здесь:

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

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

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

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

Перегрузки массивов - C++
Даны массивы следующих типов данных: Long = {},double ={},float = {}, int ={},short ={},long long ={}.

Механизм перегрузки - C++
Здравствуйте, помогите решить задачу. С помощью механизма перегрузки функций организовать сложение: а) числа с самим собой (один...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13056 / 7319 / 817
Регистрация: 27.09.2012
Сообщений: 18,058
Записей в блоге: 3
Завершенные тесты: 1
30.01.2013, 18:22     Массивы и перегрузки #2
1) Двойной указатель
C++
1
int ** arr;
либо адресную арифметику юзать
2)
C++
1
int * classname::operator[](int);
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153
31.01.2013, 11:19  [ТС]     Массивы и перегрузки #3
1) А как теперь задать этому двойному указателю двумерный массив с помощью new?
2)У меня возвращаемое значение ссылка на int, у вас это указатель на int. Больше ничего не поменялось. А мне нужно поменять индексацию двумерного массива. То есть в списке параметров должно быть int, int, а у вас только один int.

Добавлено через 8 минут
1)int **arr = new int [5][5]; не работает
2)А в конечном результате я должен обращаться в таком виде arr[5,5], что эквивалентно arr[5][5].
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2013, 11:56     Массивы и перегрузки #4
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] вы не сможете, вернее, не получите желаемого результата, поскольку сначала выполнится оператор запятая, возвращающая одно-единственное значение, и уже оно будет использовано в качестве индекса.
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153
31.01.2013, 17:48  [ТС]     Массивы и перегрузки #5
Второе задание я взял из самоучителя. При этом самоучитель написан недавно и советовал его очень хороший преподаватель.
Возможно я тогда не правильно понял задание. Вот оно
"Прекрасным примером перегрузки операции вызова функции () является возможность более общей формы двойной индексации массива. Перегрузите операцию вызова функции так, чтобы вместо записи массива в виде
C++
1
chessBoard[row][column]
можно было бы записывать альтернативную форму:
C++
1
chessBoard[row,column]
."
Может быть тут имелось ввиду использование фигурных скобочек?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 09:56     Массивы и перегрузки
Еще ссылки по теме:

Перегрузки функции - C++
вот задание: Задание 1: Разработка класса. Разработайте класс FRACTION. Элемент класса: ? числитель; ? знаменатель. ...

Функции перегрузки - C++
Здравствуйте, помогите решить задачу. Зараниее спасибо. С помощью механизма перегрузки функций реализовать функции для нахождения...

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

Механизм перегрузки - C++
Ребят помогите. Нужно создать две версии функции, используя механимз перегрузки, заголовки у которых должны быть такими: №1 float F(float...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.02.2013, 09:56     Массивы и перегрузки #6
kebal, не фигурных, круглых. Имелся ввиду такой вариант:
C++
1
chessBoard(row, column);
Yandex
Объявления
01.02.2013, 09:56     Массивы и перегрузки
Ответ Создать тему
Опции темы

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