Страница 2 из 2
Re: Получение объекта из множества
Добавлено: 19 ноя 2013, 19:38
Romeo
Функция add вырожденной получилась. Зачем отдельно добавлять в map объект, если map и так его добавит автоматически (если его ещё нет), в том месте где мы попытаемся получить этот объект через [] и поменять его?
Можно смело выбросить функцию add без всякой потери смысла.
Re: Получение объекта из множества
Добавлено: 19 ноя 2013, 19:56
Titarenko_Vlad
Нет, она мне нужна... Хотя бы что бы хранить объекты, их количество. Если я захочу посмотреть всех менеджеров, я выведу mapManager и все, иначе как я узнаю их кол-во? Вести доп. переменную и выводить в цикле по их количеству? Тогда у меня будет запрашивать инфу по менеджеру перед выводом. Вот конструктор менеджера:
Код: Выделить всё
class Manager
{
string name;
string phoneNumber;
int id;
static int count;
set<Order> orderSet;
set<Reservation> reservationSet;
public:
Manager();
...
}
Manager::Manager()
{
string _name, _phoneNumber;
cout<<"Input name: ";
cin>>_name;
cout<<"\nInput phone number: ";
cin>>_phoneNumber;
cout<<endl;
name=/*"none"*/_name;
phoneNumber=/*"none"*/_phoneNumber;
id=++count;
}
В момент создания объекта я заполняю инфу по нем.
Или Вы не об этом?
Re: Получение объекта из множества
Добавлено: 19 ноя 2013, 20:08
Romeo
Я, просто, не ожидал, что внутри конструктора будет ввод данных

Не делается так - это плохой тон. Ввод данных должен быть оторван от бизнес логики.
Тогда уж по крайней мере вот так сделай:
Код: Выделить всё
template <class T> void add()
{
T obj;
getMap<T>().insert(pair<int,T>(obj.getId(), obj));
}
Негоже брать ключ для мэпа из её же размера. Мы ведь не знаем в функции add, как внутри вычисляется id менеджера. Эти знания должны быть только в одном месте - внутри конструктора. Распихивать их по разным местам - это увеличение связности кода.
Re: Получение объекта из множества
Добавлено: 19 ноя 2013, 20:38
Titarenko_Vlad
Хорошо, спасибо)
От блин, ввод данных в конструкторе смотрелось как-то более элегантно, красиво и проще, чем вводить их выше и передавать по параметру...
Лучше переделать?)
Re: Получение объекта из множества
Добавлено: 20 ноя 2013, 14:41
Romeo
Ну обычно ввод отдельно, а бизнес логика отдельно. Хотя для учебного примера это не критично, наверное.
Re: Получение объекта из множества
Добавлено: 20 ноя 2013, 17:22
Titarenko_Vlad
Ну это не только учебный пример)
Я хочу что бы у меня было что показать работодателям, когда начну искать работу... Если им захочется посмотреть на мои проекты)
Re: Получение объекта из множества
Добавлено: 20 ноя 2013, 19:34
Romeo
Тогда лучше вынести чтение данных из конструктора. А ещё лучше сделать, чтобы они не с клавиатуры вводились, а из конфиг файла какого-нибудь. Ведь по смыслу они должны быть заполнены один раз и потом использоваться. Как-то странно их вводить каждый раз при запуске программы. Такой подход и более правилен, и заодно позволит разобраться с другими аспектами (например, чтение из файла).