272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
||||||
1 | ||||||
Нужен взгляд со стороны04.02.2014, 23:15. Показов 521. Ответов 8
Метки нет (Все метки)
Есть ли какие-нибудь недочёты? Может что-то не к месту?
0
|
04.02.2014, 23:15 | |
Ответы с готовыми решениями:
8
Бугсую. Нужен свежий взгляд Прямоугольная матрица. Нужен взгляд специалиста! нужен взгляд со стороны Нужен взгляд со стороны и критика! |
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
04.02.2014, 23:48 | 2 |
1. раз уж ты в деструкторе очищаешь память, то тогда создавай массив (выделяй память под него) в конструкторе.
2. лучше убрать возможность изменения H и W в классе, пускай только через конструктор передаются. Либо тебе придется каждый раз переопределять память. 3. Не надо внутри класса запрашивать данные, принимай данные через аргументы методов класса, а не через консоль. О входных данных должна заботиться программа, а не класс, иначе этот класс не универсален будет. 4. По моему, getM должна быть названа printM, т.к. getM должен возвращать нам указатель на массив **M
1
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
|
05.02.2014, 00:39 [ТС] | 3 |
Вот этого хотелось избежать. Получается если я создам массив, как в моём случае, через функцию
и создам ещё функцию, в которой буду очищать память, мне останется вызвать эту функцию в функции getM() после печати или же в основной программе после вызова функции печати (getM())?
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
05.02.2014, 00:53 | 4 |
Зачем?
Что может быть идеальнее, чем выделять память под массив в конструкторе, и очищать память в деструкторе? Расскажи, для чего тебе этот класс?
0
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
||||||
05.02.2014, 01:30 [ТС] | 5 | |||||
646kapeh064, да так, играюсь от нечего делать.
Сам себя запутал, хотел и фиксированные размеры для матрицы и вводимые. Думал о перегрузке конструкторов. Впрочем потом сообразил. Спасибо за помощь.
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
05.02.2014, 01:49 | 6 |
Можно. Но только это надо делать более красиво.
Например, напиши 2 приватные функции: 1. создает массив размера W H 2. уничтожает массив Затем вызывай создание массива в конструкторе а в деструкторе уничтожение массива. И добавь функцию setSize(int H, int W) например, в которой уничтожай массив и создавай новый с этими значениями. Нет ничего невозможного, надо лишь представить задачу и подумать как с меньшим кодом её реализовать.
1
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
05.02.2014, 02:16 | 7 |
GuGo1991, если уж есть вариант, где указатель не инициализирован, то есть, память выделена не была (Ваш конструктор по умолчанию), то стоит указателю присваивать NULL, а то не хорошо, когда мы освобождаем память, которой нет.
1
|
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
|
|
05.02.2014, 16:29 [ТС] | 8 |
metaluga145, вы о моём первом варианте. Не обратил должного внимания.
Учту на будущее. Спасибо.
0
|
05.02.2014, 16:50 | 9 | |||||
Добавьте конструктор копирования:
1
|
05.02.2014, 16:50 | |
05.02.2014, 16:50 | |
Помогаю со студенческими работами здесь
9
Сборка машины, нужен взгляд со стороны! ошибка (html) нужен взгляд со стороны Нужен взгляд со стороны на готовую работу Интересует взгляд на сайт со стороны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |