Напишите класс Person со следушими условиами.
1. Он должен содержат стринговие поля Имя и Емэйл
2. Уже сконструирований объект при изменении (копировать сонструктор и тд.) должен либо менятся полностью-и Имя я Емэйл -либо , при исключенях-типа плохой аллокации памяти должен делать роллбак к своим первоначальным значениям
Очень сложная задача
R>Напишите класс Person со следушими условиами. R>1. Он должен содержат стринговие поля Имя и Емэйл R>2. Уже сконструирований объект при изменении (копировать сонструктор и тд.) должен либо менятся полностью-и Имя я Емэйл -либо , при исключенях-типа плохой аллокации памяти должен делать роллбак к своим первоначальным значениям
Это называется поддержка транзакционных изменений. Решается вынесением данных Person в отдельный объект (типа PersonData). Сам Person хранит указатель на текущие данные и предыдущие данные. У Persion два метода: Commit и Rollback будут точно, а вот начало транзакции можно указывать как явно (через метод StartTransaction) так и не явно при изменении любого свойства Person.
Само собой разумеется прямого доступа к полям Person не будет — все обращения должны идти через методы Person.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, rembo, Вы писали:
R>Напишите класс Person со следушими условиами. R>1. Он должен содержат стринговие поля Имя и Емэйл R>2. Уже сконструирований объект при изменении (копировать сонструктор и тд.) должен либо менятся полностью-и Имя я Емэйл -либо , при исключенях-типа плохой аллокации памяти должен делать роллбак к своим первоначальным значениям
R>при кодировании можно пользоваться STL
и/или нарушают Правила форумов RSDN.ru. В частности, поиск готовых решений к учебным заданиям или просьбы об их выполнении вместо обсуждения достоинств и недостатков своего решения являются офф-топиком. Публикация одного и того же сообщения более одного раза на форумах RSDN.ru также запрещена правилами.
P.S. На всякий случай, добавлю, что отвечать на данное сообщение в форуме также не следует. Вопросы, пожелания и замечания относительно модерирования этого и других форумов rsdn.ru — в .
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Здравствуйте, rembo, Вы писали:
КД>Очень сложная задача
R>>Напишите класс Person со следушими условиами. R>>1. Он должен содержат стринговие поля Имя и Емэйл R>>2. Уже сконструирований объект при изменении (копировать сонструктор и тд.) должен либо менятся полностью-и Имя я Емэйл -либо , при исключенях-типа плохой аллокации памяти должен делать роллбак к своим первоначальным значениям
КД>Это называется поддержка транзакционных изменений. Решается вынесением данных Person в отдельный объект (типа PersonData). Сам Person хранит указатель на текущие данные и предыдущие данные. У Persion два метода: Commit и Rollback будут точно, а вот начало транзакции можно указывать как явно (через метод StartTransaction) так и не явно при изменении любого свойства Person.
Не нужно Commit и Rollback. Нужно лишь реализвать функцию swap, которая гарантированно не бросает исключений.
Здравствуйте, MaximE, Вы писали:
КД>>У Persion два метода: Commit и Rollback будут точно, а вот начало транзакции можно указывать как явно (через метод StartTransaction) так и не явно при изменении любого свойства Person.
ME>Не нужно Commit и Rollback. Нужно лишь реализвать функцию swap, которая гарантированно не бросает исключений.
Да я так, посмотрел на задачу более широким взглядом
net,net vse delo imenno v tom chto etu zadachu nado reshit dlia sluchaia kogda iskluchenia est-swap ne goditsa.Ne mogli by vy raspisat vash case s PersonData
Здравствуйте, rembo, Вы писали:
R>net,net vse delo imenno v tom chto etu zadachu nado reshit dlia sluchaia kogda iskluchenia est-swap ne goditsa.Ne mogli by vy raspisat vash case s PersonData
Будь так добёр, почитай Саттера. Все твои вопросы отпадут.
Ia prochital Suttera-sluchai kotorii on razbiraet ne podhodit suda.
Здравствуйте, MaximE, Вы писали:
ME>Здравствуйте, rembo, Вы писали:
R>>net,net vse delo imenno v tom chto etu zadachu nado reshit dlia sluchaia kogda iskluchenia est-swap ne goditsa.Ne mogli by vy raspisat vash case s PersonData
ME>Будь так добёр, почитай Саттера. Все твои вопросы отпадут.
R>ia ochen ogranichen vo vremeni-tak ia u Suttera nichego podhodiachego ne vizhu-esli mozesh pomogi,napishi code
R>Здравствуйте, MaximE, Вы писали:
ME>>Здравствуйте, rembo, Вы писали:
R>>>net,net vse delo imenno v tom chto etu zadachu nado reshit dlia sluchaia kogda iskluchenia est-swap ne goditsa.Ne mogli by vy raspisat vash case s PersonData
ME>>Будь так добёр, почитай Саттера. Все твои вопросы отпадут.
Пожалуйста, не забывайте удалять лишнее из цитат и конвертировать транслит, например, при помощи одного из сайтов, указанных в правилах. Также, пожалуйста, не забывайте, что на RSDN.ru ответ принято писать после процитированных строк. -- ПК
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен