2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
1 | |
Переопределение operator [][]19.12.2011, 06:54. Показов 2026. Ответов 20
Метки нет (Все метки)
Пишу свой класс матрица. Необходимо получать доступ к элементу матрицы.
Пробую переопределить оператор [][] обычным образом, но не получается. Есть ли еще возможность получить доступ к элементу матрицы через [][]? написал функцию double Element(int i,int j) {return Matr[i][j];}, но она меня не устраивает.... как быть?
0
|
19.12.2011, 06:54 | |
Ответы с готовыми решениями:
20
переопределение operator[] Глобальное переопределение "operator <<" для char * Class & operator's |Error: undefined reference to operator Вызов operator[] через operator[] const |
Заблокирован
|
||||||
19.12.2011, 09:10 | 2 | |||||
1
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
||||||
19.12.2011, 11:27 [ТС] | 3 | |||||
как то замудренно немного...
а если я в классе матрицу определяю так:
Добавлено через 13 минут ок, я это исправил. работает. тогда еще вопрос, можно ли в полученную ячейку записать значение? как это сделать?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
19.12.2011, 11:40 | 4 |
А такой разве есть?
Добавлено через 1 минуту Это указатель на массив указателей на массивы. Первый индекс индексирует массив даблов, второй - элемент матрицы.
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
19.12.2011, 11:49 [ТС] | 5 |
с этим я уже разобрался.
меня сейчас интересует, можно ли подобным образом записать значение в ячейку?
0
|
Заблокирован
|
||||||
19.12.2011, 11:53 | 6 | |||||
Какие мы привередливые...
Как принцесса!
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
19.12.2011, 12:08 [ТС] | 7 |
Bers, Я это уже изменил. дописал сам, все работает!
Меня сейчас интересует другое, можно ли подобным образом записать значение в ячейку?
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
19.12.2011, 17:06 [ТС] | 9 |
0
|
Заблокирован
|
||||||
19.12.2011, 17:23 | 10 | |||||
А... я забыл просто про одну особенность))
Добавлено через 7 минут хотя.. вот щас проверил по человечески... у меня лично все прекрасно и старый вариант записывал
0
|
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
|
|
19.12.2011, 17:28 | 11 |
не забыл, она тут вообще ни к чему
в этом случае я могу присвоить какой-либо строке левый адрес и при вызове деструктора у тебя все упадет
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
19.12.2011, 17:35 [ТС] | 13 |
вот мне и интересно, как можно добиться тех же результатов, но не допуская возможности нарушения данных класса
0
|
Заблокирован
|
|
19.12.2011, 17:43 | 14 |
Данные класса итак не будут нарушены, если не пытаться вредить специально.
Если очень нужно сделать дополнительную защиту от дурака - возвращать нужно не голые указатели на элементы матрицы, а некие умные указатели, которые не позволят ничего плохого сотворить с самим элементом матрицы, но позволяет работать с ним, как ни в чем не бывало. Подобного рода защита ведёт к падению производительности, и частично усложняет понимание архитектуры продукта.
0
|
2 / 1 / 2
Регистрация: 17.11.2010
Сообщений: 121
|
|
19.12.2011, 18:35 [ТС] | 16 |
хех... я от этого как раз и уйти пытаюсь...
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
19.12.2011, 19:29 | 18 | |||||
Если нельзя, но очень хочется - значит можно!
Код
andrew@rd-andrew ~/cpp/classes $ g++ -o simple_matrix simple_matrix.cpp andrew@rd-andrew ~/cpp/classes $ ./simple_matrix 13 69
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
19.12.2011, 19:49 | 20 |
А попробуйте всю строку оптом заменить - не выйдет. У меня Row - закрытый класс. Вызывать его методы получится, а вот мутить что-то с переменными этого типа не так просто...
2
|
19.12.2011, 19:49 | |
19.12.2011, 19:49 | |
Помогаю со студенческими работами здесь
20
operator char() или operator int() Перегрузка operator>> и operator<< в абстрактном классе Реализация operator + через operator += Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |