Opened 3 years ago
Closed 3 years ago
#525 closed ожидаются исправления (задача сдана)
WW #10
Reported by: | predelina.anastasiya | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW cpp_io | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Исправила ошибки
comment:3 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Тест на чтение 100-символьного имени упал :(
- Когда ты передаешь строки в функцию (например в конструктор Employee), стоит их передать по константной ссылке, чтобы избежать лишнего копирования
- Не нужно писать строку посимвольно в поток. В
std::string
есть методc_str()
, который возвращает указатель на си-шную строку, и её можно записать в файл одним вызовомwrite
- То же самое про
read_binary
-- там можно просто с помощьюgetline
прочитать строку из потока прямо вstd::string
https://en.cppreference.com/w/cpp/string/basic_string/getline
8/10
comment:4 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Ошиблась с заглавной буквой в выводе строчки
Base Salary
. Я пофиксил, после этого все тесты кроме одного прошли -- тест на чтение строки длино 100 символов упал по сегфолтуСтиль
Employee::read[_binary]
. Представь, что тебе нужно добавить нового сотрудника -- тебе придется лезть в эти функции и добавлять туда еще одинcase
вswitch
. Хочется спроектировать иерархию так, чтобы новые наследники добавлялись максимально легко и с меньшей корректировкой уже написанного кода. Предлагаю вот такую схему: сделай операторы чтения из потока также, как ты сделала операторы вывода для Employee и его наследников, напиши фабричную функцию, которая по типу будет создавать нужного наследника и тогда логика чтения сотрудника у тебя сократится доТогда нового наследника можно будет добавить без правки кода базового класса Employee, нужно будет просто добавить новый тип в фабричный метод. А еще ты избавишься от копи-пасты.
_sz
, раз ты используешь вектор. У него есть методsize()
, который возвращает свой размер.7/10