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

operator[][] для класса - C++

Восстановить пароль Регистрация
 
nchameleon
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 161
07.02.2011, 17:04     operator[][] для класса #1
Добрый день, создал класс где храниться массив, и хотелось бы иметь напрямю доступ через по типу

C++
1
2
3
4
5
6
7
8
9
10
class Matrix {
....
int ** data;
....
operator[][]
};
 
Matrix* dMat = new Matrix(10,10);
dMat[1][2] = 10;
int s = dMat[1][2];
знаю как сделать с одними []
operator[](int X) {}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.02.2011, 17:10     operator[][] для класса #2
Да нет такого оператора. Вам надо класс реализовывать на основе другого класса, например, MatrixRow, для которого перегружен оператор []. Т.е. у класса Matrix оператор [] будет возвращать ссылку на объект MatrixRow, для которого и будет вызван второй (перегруженный уже для MatrixRow) оператор [], возвращающий уже нужную ячейку.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
07.02.2011, 17:15     operator[][] для класса #3
nchameleon,
C++
1
int* operator[] (int i) const {return matr[i];}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.02.2011, 19:24     operator[][] для класса #4
А вообще можно и так.

C++
1
2
3
4
5
int& operator () (int i, int j)
{
    //Проверка на выход из диапазона
    return matr[i][j];
}
Но лучше как сказал silent1991
silent_1991
07.02.2011, 20:10
  #5

Не по теме:

ForEveR, да, оператор () - вообще чудесный оператор))) Что хочешь - то в него и суй, одно слово - оператор вызова функции)))

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
07.02.2011, 20:20     operator[][] для класса #6
silent_1991, Ну да)) Тут тебе и функторы и доступ и печать если захочется
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2011, 14:42     operator[][] для класса
Еще ссылки по теме:

operator+ как член класса C++
operator= для шаблона класса C++
Реализация operator + через operator += C++

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

Или воспользуйтесь поиском по форуму:
nchameleon
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 161
09.02.2011, 14:42  [ТС]     operator[][] для класса #7
Цитата Сообщение от asics Посмотреть сообщение
nchameleon,
C++
1
int* operator[] (int i) const {return matr[i];}
спасибо за совет asics,
у меня получилось это сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class TTT>
class Matrix {
....
TTT** data;
....
TTT& operator[] (int i) 
{
    return *data[i];
}
};
 
Matrix<int>* dMat = new Matrix<int>(10,10);
dMat[1][2] = 10;
int s = dMat[1][2];
может кому пригодиться в будущим)))
Yandex
Объявления
09.02.2011, 14:42     operator[][] для класса
Ответ Создать тему
Опции темы

Текущее время: 13:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru