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

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

Войти
Регистрация
Восстановить пароль
 
nchameleon
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 163
#1

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

07.02.2011, 17:04. Просмотров 429. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2011, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос operator[][] для класса (C++):

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

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

Перегрузка operator<< для шаблонного класса - C++
Добрый день не могу понять как реализовать перегрузку &lt;&lt; для шаблонного класса template &lt;class T&gt; class List { public: ...

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

Перегрузка operator< для двух экземпляров класса отрезок - C++
Всем добра, в классе отрезок хочу перегрузить операцию &lt; правильно ли я сделал ? При этом отрезок с координатами x1=1 y1=1 и x2=4 y2=4...

Перегрузить operator<<() для шаблонного класса (перегрузка оператора вывода) - C++
Здравствуйте. Перегружаю оператор вывода для шаблонного класса. using namespace std; template &lt;class Element&gt; class List { ...

6
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.02.2011, 17:10 #2
Да нет такого оператора. Вам надо класс реализовывать на основе другого класса, например, MatrixRow, для которого перегружен оператор []. Т.е. у класса Matrix оператор [] будет возвращать ссылку на объект MatrixRow, для которого и будет вызван второй (перегруженный уже для MatrixRow) оператор [], возвращающий уже нужную ячейку.
1
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
07.02.2011, 17:15 #3
nchameleon,
C++
1
int* operator[] (int i) const {return matr[i];}
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
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
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
07.02.2011, 20:20 #6
silent_1991, Ну да)) Тут тебе и функторы и доступ и печать если захочется
0
nchameleon
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 163
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
09.02.2011, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2011, 14:42
Привет! Вот еще темы с ответами:

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

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

Перегрузка "operator =" для шаблона класса - C++
как правильно перегрузить operator= для щаблона, по идее я принимаю 2 ссылки на объекты этого класса и возвращаю 1 из них ... что-то не...

operator+ как член класса - C++
Могу ли я сделать operator+ как член класса таким образом? myClass&amp; myClass::operator+(const myClass&amp; other1, const myClass&amp; other2) { ...


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

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

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