![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Доброго времени суток. Скажите пожалуйста, каким способом нужно реализовывать следующую ситуацию:
У меня есть объект с атрибутами. Их много, это не только текст и цифры, но и файлы + ссылки на другие объекты. Мне нужно дать пользователю создать копию этого объекта, но с другим обозначением. Сейчас реализовано так: я создаю точную копию объекта и отображаю диалог (где пользователь может что то поменять). А если юзер нажмет "Отмену", то вновь созданный объект удаляется. И вот этот момент мне очень не нравится. Я не хочу создавать объект, а потом его удалять. Наверняка существует какой-нибудь паттерн или что-нибудь еще более элегантное, чем мое решение сейчас. Буду благодарен. |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Copy-On-Write - если я тебя правильно понял.
Копия произойдет тогда, когда это действительно необходимо, в остальное же время оба объектa будут ссылаться на одни и те же данные. Легко реализуется через boost::shared_ptr и идиому PIMPL. cow.hpp
x.hpp
и реализация x.cpp
main.cpp
Это сообщение отредактировал(а) azesmcar - 22.3.2011, 15:03 |
||||||||
|
|||||||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Спасибо, буду разбираться.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
данные с объекта заносятся в диалог, по OK заносятся с диалога в объект, при ОТМЕНА ничего с объектом не делается.. зачем копия ? или Вы диалог жестко с объектом связали ? не желательный подход.. |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
А почемубы не сделать примерно так:
1. Открываем диалог - заполняем его поля из оригинального объекта. 2. Нажали отмена - не делаем ничего. 3. Нажали Ok - Создали новый объект через конструктор копирования. (либо просто из диалога все поля перенеслибы в новый объект). -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
mes, ну да. в диалог передается объект, а потом уже, если объект != 0 заполняются поля диалога данными из объекта. А какая альтернатива, что бы я знал. Делать так как предложил Artemon?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |