0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 4
|
|||||||||||
1 | |||||||||||
Не могу создать ссылку на объект в массиве29.07.2013, 04:40. Показов 1308. Ответов 17
Метки нет (Все метки)
Полный скрипт можно скачать тут: http://ubuntuone.com/2HSwJJNP7f0Oa4io0yciST
0
|
29.07.2013, 04:40 | |
Ответы с готовыми решениями:
17
Как создать ссылку на объект? Как создать ссылку на объект? Как создать ссылку на объект внутри члена класса этого объекта Не могу создать ссылку она исчезает |
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
29.07.2013, 09:13 | 2 |
Должно быть Row *
Это кажись тут лишнее. Это верно. Нужны значения по умолчанию - arr(nullptr) и т.п. Аналогично
1
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
29.07.2013, 09:53 | 3 |
И совет на будущее поля класса начале, а потом методы, очень трудно, вначале ищешь поля, потом назад, что бы воткнуть в методы.
1
|
29.07.2013, 10:06 | 4 | ||||||||||
Хотел бы обратить внимание на эту ф-ю:
1
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
29.07.2013, 10:59 | 5 |
все правильно тебе и написал, matrix является указателем вы создаете массив Row и сохраняете указатель в переменную matrix, обращаетесь к i-тому элементу и он возвращает вам Ссылку, на i-ый элемент, но в него вы пытаетесь записать указатель, который возвращает new, просто если у вас Row cтрока, то Вам нужно создать массив строк, а цикл не нужен
0
|
29.07.2013, 12:44 | 6 | |||||
Но тут ВНИМАНИЕ! то,, что я написал будет работать только, если класс Row написан верно. У тебя же нету даже нормальных конструктора копирования и оператора присвоения в нём!
0
|
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 4
|
|
29.07.2013, 21:29 [ТС] | 7 |
Правильно, просто все числа в матрице заменяются на их модуль и дальше уже идут операции с обновленной матрицей, все ок
Это вываливается с кууучей ошибок. чего?) matrix - массив типа Row, в конструкторе указывается, сколько строк в матрице, а потом в цикле каждой ячейке matrix присваивается ссылка на объект этого класса Row. а конструктору передается соответственно количество столбцов. ну это в идеале, а в суровой реальности просто ничего не работает )
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
30.07.2013, 12:52 | 8 |
а нью разве не указатель возвращает? matrix[i] возвращает ссылку, а new Row(w) указатель, вот и не соответствие
0
|
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
|
|
30.07.2013, 13:17 | 9 |
Моментально развидьте этот совет все, кто его видел. Классы, как и любой код, гораздо чаще читаются пользователями (кода, а не винды/компьютер/монитора), чем пишутся разработчиками. А пользователю нужен интерфейс класса, а не его внутреннее устройство.
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
30.07.2013, 13:32 | 10 |
Fyret, чего? Вот лично я сейчас читал код, читать очень сложно, в начале вниз, потом вверх... А уж если на то пошло, то надо делить класс на .h and .cpp. А не кидать всё в одну кучу
0
|
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
|
|
30.07.2013, 13:38 | 11 |
Есть множество подходов к организации кода, это вопрос вкуса (к слову: пихание всего в хедер уменьшает число единиц трансляции и, как следствие, время компиляции. Минусов тоже хватает).
Но главное правило - код должен легко читаться пользователем. Пользователю внутренние данные не нужны.
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
30.07.2013, 13:53 | 12 |
А на кой пользователю лазать в код? В код лазают, те кто его пишут...
0
|
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
|
|
30.07.2013, 14:00 | 13 |
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
30.07.2013, 14:03 | 14 |
Fyret, понял... Туплю... Но писать код для себя, когда один чирикаешь, это одно, а когда пишешь в команде, надо и о других позаботиться. Да еще возможность прихода новых, и очень трудно, еще повторюсь, бегать по коду, искать в начале поля класса, а потом возвращаться к методам.
0
|
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
|
|
30.07.2013, 14:12 | 15 |
Wolkodav, именно, я об и говорю. Но класс, к примеру, поддерживает команда из 3-4 человек - им надо бегать от методов к данным и обратно. А пользуются классом 20, 30, 50 человек из других отделов, и им бегать не надо. Ну и кого больше? Чье удобство приоритетнее?
0
|
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
30.07.2013, 14:20 | 16 |
А коли пользуются они этими классами, то на кой им в класс лазить? Обозвали методы понормальному, входные параметры по человечески и пошли вперёд. Лично я за время разработки ниразу не лазил в коды методов( да боже упоси лезть в чужую логику без надобности) классов, а вот поля требовались.
0
|
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 4
|
|
30.07.2013, 23:03 [ТС] | 17 |
каюсь, было влом ))
Добавлено через 3 часа 23 минуты Решение: matrix[i] = *(new Row(w));
0
|
30.07.2013, 23:21 | 18 | ||||||||||
1)утечка
2) создание одного ряда размером w Добавлено через 5 минут Решение: 1) Навести порядок в классе Row - определить конструктор копирования и оператор = по-нормальному, чтоб утечек не было! Ибо http://ru.wikipedia.org/wiki/%... 0%B8%D0%B5) 2) Конструктор матрицы будет выглядеть так:
тоже безобразие. В конструкторе по-умолчанию ничего плохого нет, наоборот, хорошо, что имеется. Но он ничего не инициализирует, а объекты, созданные с его помощью, будут деинициализироваться деструктором
0
|
30.07.2013, 23:21 | |
30.07.2013, 23:21 | |
Помогаю со студенческими работами здесь
18
Не могу создать объект Зачем при перегрузке оператора >> в параметр включать ссылку на объект, а не сам объект? Не могу создать ссылку на переменную String с конструктора JFrame Как преобразовать ссылку на объект в указатель на этот объект? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |