Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

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

5
Croessmah
Пришел
Эксперт CЭксперт С++
13735 / 7814 / 889
Регистрация: 27.09.2012
Сообщений: 19,202
Записей в блоге: 3
Завершенные тесты: 1
30.01.2013, 18:22 #2
1) Двойной указатель
C++
1
int ** arr;
либо адресную арифметику юзать
2)
C++
1
int * classname::operator[](int);
0
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].
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 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] вы не сможете, вернее, не получите желаемого результата, поскольку сначала выполнится оператор запятая, возвращающая одно-единственное значение, и уже оно будет использовано в качестве индекса.
1
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153
31.01.2013, 17:48  [ТС] #5
Второе задание я взял из самоучителя. При этом самоучитель написан недавно и советовал его очень хороший преподаватель.
Возможно я тогда не правильно понял задание. Вот оно
"Прекрасным примером перегрузки операции вызова функции () является возможность более общей формы двойной индексации массива. Перегрузите операцию вызова функции так, чтобы вместо записи массива в виде
C++
1
chessBoard[row][column]
можно было бы записывать альтернативную форму:
C++
1
chessBoard[row,column]
."
Может быть тут имелось ввиду использование фигурных скобочек?
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
01.02.2013, 09:56 #6
kebal, не фигурных, круглых. Имелся ввиду такой вариант:
C++
1
chessBoard(row, column);
0
01.02.2013, 09:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 09:56
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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