Change History (5)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Бубнов Данил Константинович
Type: ожидается проверкаожидаются исправления

У вас при выводе в текстовый поток куча нулевых символов выводится. Помедитируйте над resize для std::string

Какоей-то у вас совсем жуткий copy-and-swap

Developer::Developer(const Developer& dev) {
    auto copy = std::make_unique<Developer>(dev.name_, dev.base_salary_, dev.has_bonus_);
    swap(*this, *copy);
}

Тут же проще Developer::Developer(const Developer& dev) : Developer(dev.name_, dev.base_salary_, dev.has_bonus_) {}

Раз уж начали использовать умные указатели, используйте до конца.

   array.add(dev);
   delete dev;

Зачем создавать, потом копировать, потом удалять? Передавайте сразу владение указателем.

манипуляторы для c-строк должны работать с c-строками. Иначе какой в них смысл?

Last edited 4 years ago by Дмитрий Свиридкин (previous) (diff)

comment:2 Changed 4 years ago by Бубнов Данил Константинович

Owner: changed from Бубнов Данил Константинович to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Теперь базе указатели передаются во владение.
Манипулятор исправил, теперь для при чтении строки я создаю массив char, передаю его в манипулятор, потом этот массив преобразую в string, сразу решилась проблема с лишними символами.

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Бубнов Данил Константинович
Type: ожидается проверкаожидаются исправления

Поле type_ не имеет смысла -- каждый объект и так знает, какого он типа

Зачем нужно поле size_ если у вас и так vector?

assert((int)name.size() <= MAX_NAME_LENGTH); Не очень полезный assert, если вы храните std::string

Вместо магических констант для типов лучше завести enum

Код, разбирающий типы, нужно убрать из main -- этим должен заниматься модуль, а не пользовательский код

7/10

comment:4 Changed 4 years ago by Бубнов Данил Константинович

Owner: changed from Бубнов Данил Константинович to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

За пол часа я так и не смог найти в Интернете, как узнать, в каком режиме открыт istream, и как понял, это невозможно.

comment:5 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed

Явно вызывать close у файлов не обязательно -- деструктор сам все закроет

Да, различить std::istream открытый бинарно или текстово -- невозможно. Можно, только сделав дополнительную обертку.


9.9/10

Note: See TracTickets for help on using tickets.