Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 5
Регистрация: 06.04.2010
Сообщений: 174
1

operator[][] для класса

07.02.2011, 17:04. Показов 509. Ответов 6
Метки нет (Все метки)

Добрый день, создал класс где храниться массив, и хотелось бы иметь напрямю доступ через по типу

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) {}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2011, 17:04
Ответы с готовыми решениями:

Operator< для класса
Всем добра, что-то я туплю подскажите как определить operator&lt; для класса, в классе два значение...

Перегрузка operator<< для шаблонного класса
Добрый день не могу понять как реализовать перегрузку &lt;&lt; для шаблонного класса template...

Перегрузка operator>> для производного класса
Базовый класс: Taxi_Car.h: #pragma once #include&lt;string&gt; using namespace std; class...

Реализовать перегрузку operator+() для пользователского класса
Есть класс ДРОБЬ, его члены ЧИСЛИТЕЛЬ И ЗНАМЕНАТЕЛЬ, а методы - конструктор и методы вывода....

6
Эксперт С++
5044 / 3105 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
07.02.2011, 17:10 2
Да нет такого оператора. Вам надо класс реализовывать на основе другого класса, например, MatrixRow, для которого перегружен оператор []. Т.е. у класса Matrix оператор [] будет возвращать ссылку на объект MatrixRow, для которого и будет вызван второй (перегруженный уже для MatrixRow) оператор [], возвращающий уже нужную ячейку.
1
Freelance
Эксперт С++
2880 / 1815 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
07.02.2011, 17:15 3
nchameleon,
C++
1
int* operator[] (int i) const {return matr[i];}
1
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.02.2011, 19:24 4
А вообще можно и так.

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

Не по теме:

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

0
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.02.2011, 20:20 6
silent_1991, Ну да)) Тут тебе и функторы и доступ и печать если захочется
0
2 / 2 / 5
Регистрация: 06.04.2010
Сообщений: 174
09.02.2011, 14:42  [ТС] 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];
может кому пригодиться в будущим)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2011, 14:42

Перегрузка operator< для двух экземпляров класса отрезок
Всем добра, в классе отрезок хочу перегрузить операцию &lt; правильно ли я сделал ? При этом отрезок...

Перегрузить operator<<() для шаблонного класса (перегрузка оператора вывода)
Здравствуйте. Перегружаю оператор вывода для шаблонного класса. using namespace std; template...

Статический пул для класса с помошью class::operator new непонятное исключение?
Привет всем! Пытаюсь организовать статический пул(молниеносный аллокатор памяти. ) для некоторого...

Написать перегрузку operator+() для класса "Массив"
Добрый день, Подскажите, как выйти правильно из ситуации: Array&amp; Array::operator+(const...


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

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

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