Opened 6 years ago
Closed 6 years ago
#197 closed ожидается проверка (задача сдана)
Home assignment #1
Reported by: | marshalkin.nikita | Owned by: | rutsky,grabovoy.philipp |
---|---|---|---|
Priority: | проверка | Milestone: | ha1-deadline |
Component: | HA#1 matrices | Version: | 1.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 6 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 6 years ago by
Milestone: | ha1-milestone2 → ha1-deadline |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Привет!
- Fixed
- Fixed
- Fixed (
cpplint
посоветовал так приводить) - Для однородности. Если будет разыменование, то не проверил размерности,
.Height()
,.Width()
будут равны нулю. А писать дополнительное условие при освобождении памяти - некрасиво. - Google code style, говорит: исключения - плохо. Рассчитывал, что перед обращениями будут проверяться границы где-то выше. А если нет - получаешь
assert
. Как в таком случае лучше обрабатывать ошибки? Возвращать "особую" ошибочную матрицу, которая при приведении кbool
будет возвращатьfalse
?
comment:3 Changed 6 years ago by
Resolution: | → задача сдана |
---|---|
Status: | new → closed |
- В данном случае компилятор выделит память под хранение размера аллоцированного массива (нуля).
- Исключения — медленно :) Так как в задаче не просят что-то делать при проблемах, то выкидывать их из функций и обрабатывать через
try/catch
выглядит нормальным планом. Для более общей либы подойдет вариант с "кодом возврата". Или можно вынести проверки в отдельные методы, —matrix::can_be_multiplied_by(const matrix& other)
, — но нужно следить за инвариантами: например, чтобы любой константный метод/манипуляции friend-классов не меняли возвращаемое значение таких функций — чтобы не возникало ситуаций-гонок как сexists
иopen
на файле.
Note: See
TracTickets for help on using
tickets.
Приветствую!
Пару штук на доделку:
smoke
, наверное, должен зависеть от$(EXEC)
?).std::ifstream
просятconst char*
для работы (конструктора,open
),И общие штуки:
static_cast<bool>(std::ifstream)
избыточно -- оно произойдет автоматически.data_(new double[0]())
, а неstd::nullptr
? Первое ведет кundefined behavior
при обращении -- этот класс ошибок, конечно, сложнее отловить.assert
, который можно заигнорить при билде (черезNDEBUG
).