Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 16:30   #1
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию Перегрузка []

Скажите пожалуйста можно ли перегрузить оператор доступа к [i][j] ячейке массива для многомерного массива?
Допустим есть класс матриц и необходимо получить доступ к [i][j] ячейке матрицы какого нибудь обьекта, если бы матрица была одномерная то я бы сделал так:
Код:
int& myclass::operator[](index)
{
    return mass[index];
}
Но как сделать то же для многомерного массива что то даже не могу себе представить, помогите плиз!
Lazy maximka вне форума Ответить с цитированием
Старый 30.04.2011, 16:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

перегрузите [], чтобы он возвращал строку матрицы
p51x вне форума Ответить с цитированием
Старый 30.04.2011, 17:03   #3
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Эмм...это так?
Код:
int& myclass::operator[](index)
{
    return *mass[index];
}
но мне же нужен еще и j элемент строки!
Lazy maximka вне форума Ответить с цитированием
Старый 30.04.2011, 18:32   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

впрос на засыпку: что будет, если применить к строке матрице (фактически к массиву) оператор []?
p51x вне форума Ответить с цитированием
Старый 30.04.2011, 18:57   #5
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

так он же уже возвращает строку, мне как минимум нужен второй параметр но оператор[] то бинарный.???
Lazy maximka вне форума Ответить с цитированием
Старый 30.04.2011, 20:33   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

распишите, что будет вызвано при mass[i][j]
p51x вне форума Ответить с цитированием
Старый 02.05.2011, 08:38   #7
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Ниче не понял если честно, смотрел в интернете там создают дополнительный класс для этой вещи, но мне это уже поздно делать так как придется переписывать весь исходный класс.А если возвращать строку то он возвращает первое число в строке.

А если в коде обращаться matrixn[i][j] компилятор ругается на то что для о нужен массив или указатель. Или я че то неправильно делаю. у меня есть динамический массив в классе и я возвращаю строку так return *mass[index][]

Последний раз редактировалось Stilet; 02.05.2011 в 09:14.
Lazy maximka вне форума Ответить с цитированием
Старый 02.05.2011, 09:31   #8
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Пример:
Код:
#include <iostream>
class A
{
	public:
		int a[5][5];
		int* operator[] (int i)
		{
			return a[i];
		}
};

int main()
{
	A a;
	a[2][3] = 5;
	std::cout<<a[2][3];
}
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 02.05.2011, 10:43   #9
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Вот спасибо, давно бы так!
Lazy maximka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка [] zhenya.ya Общие вопросы C/C++ 0 10.04.2011 23:44
C++ Перегрузка GLAM1 Общие вопросы C/C++ 7 01.04.2011 15:49
C++ Перегрузка GLAM1 Помощь студентам 3 31.03.2011 21:09
Перегрузка (С++) RodionL3 Помощь студентам 1 22.04.2010 10:48
Перегрузка ++ counter Общие вопросы C/C++ 3 20.12.2008 13:30