| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > идиома "postconstructor and predestructor" в с++ |
| Автор: boostcoder 15.1.2011, 17:27 |
| всем привет. с такой идиомой "познакомился" в Python. так же, говорят что и в F# такое тоже есть. наверняка и в многих других ЯП. но, к сожалению, не в с++. объяснять что это, и для чего это может понадобиться, полагаю не надо. из названия все понятно. в гугле по этому направлению ничего не нашел. кроме, этого упоминания: http://www.boost.org/doc/libs/1_45_0/doc/html/signals2/examples.html#signals2.examples.deconstruct мне интересно, каким образом, минимальными изменением декларации структур/классов, можно навязать некоторому объекту такое поведение. спасибо. зы как такового, вопроса нет. просто размышления.. |
| Автор: GoldFinch 15.1.2011, 18:56 |
| в фабрике после создания объекта можно вызвать "постконструктор", или наследоваться и конструктор наследника будет "постконструктором" а зачем эта идиома? Добавлено через 1 минуту и 39 секунд по теме http://stackoverflow.com/questions/1151787/is-there-any-automated-way-to-implement-post-constructor-and-pre-destructor-virtu |
| Автор: boostcoder 16.1.2011, 00:18 | ||||
вы говорите о методе, вызываемом руками. это никакой не постконструктор ;) у вас не бывало ситуаций, когда созданный объект, это не то же самое, что и инициализированный? у меня такое часто встречается. и вызывать методы для инициализации - логически не правильно. нарушается целостность.
вот этого не нашел. почитаю. спасибо. |
| Автор: mes 16.1.2011, 00:28 | ||
почему руками ? все это дело можно слегка автоматизировать.. |
| Автор: boostcoder 16.1.2011, 00:32 |
скажите, есть ли способ это автоматизировать, не сильно нарушая структуру проекта? может наследованием от какого-нибудь базового класса? я пытался - не допёр. фабрика - не совсем то, т.к. с интеграцией могут возникнуть сложности, не говоря уже о модернизации рабочего кода. |
| Автор: mes 16.1.2011, 00:35 | ||
думаю нет.. ибо в "чистом виде" это "противоречит "политики С++.. Добавлено через 45 секунд не наследованием , а оборачиванием... |
| Автор: boostcoder 16.1.2011, 00:39 | ||
что-то типа:
? или "оборачиванием" буквально? |
| Автор: mes 16.1.2011, 00:44 |
нет crtp тут не пройдет.. нет внешнего по отношению к конструктору креатора.. в простом виде выглядит так : http://liveworkspace.org/code/8f3dbcca9aa81191df7be5a589cbd9f1 |