Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> идиома "postconstructor and predestructor" в с++ 
V
    Опции темы
boostcoder
Дата 15.1.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем привет.
с такой идиомой "познакомился" в Python. так же, говорят что и в F# такое тоже есть. наверняка и в многих других ЯП. но, к сожалению, не в с++.
объяснять что это, и для чего это может понадобиться, полагаю не надо. из названия все понятно.
в гугле по этому направлению ничего не нашел. кроме, этого упоминания: http://www.boost.org/doc/libs/1_45_0/doc/h...les.deconstruct

мне интересно, каким образом, минимальными изменением декларации структур/классов, можно навязать некоторому объекту такое поведение.

спасибо.

зы
как такового, вопроса нет. просто размышления..
PM WWW   Вверх
GoldFinch
Дата 15.1.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



в фабрике после создания объекта можно вызвать "постконструктор", или наследоваться и конструктор наследника будет "постконструктором"
а зачем эта идиома?

Добавлено через 1 минуту и 39 секунд
по теме
http://stackoverflow.com/questions/1151787...estructor-virtu

PM MAIL ICQ   Вверх
mes
Дата 15.1.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(GoldFinch @  15.1.2011,  17:56 Найти цитируемый пост)
в фабрике после создания объекта можно вызвать "постконструктор", 

 smile, при том под фабрикой подразумевается любой креатор.. 

Цитата(GoldFinch @  15.1.2011,  17:56 Найти цитируемый пост)
 или наследоваться и конструктор наследника будет "постконструктором"

 smile , не будет..




--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 16.1.2011, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(GoldFinch @  15.1.2011,  18:56 Найти цитируемый пост)
в фабрике после создания объекта можно вызвать "постконструктор"

вы говорите о методе, вызываемом руками. это никакой не постконструктор ;)

Цитата(GoldFinch @  15.1.2011,  18:56 Найти цитируемый пост)
а зачем эта идиома?

у вас не бывало ситуаций, когда созданный объект, это не то же самое, что и инициализированный? у меня такое часто встречается. и вызывать методы для инициализации - логически не правильно. нарушается целостность.

Цитата(GoldFinch @  15.1.2011,  18:56 Найти цитируемый пост)
по теме
http://stackoverflow.com/questions/1151787...estructor-virtu

вот этого не нашел. почитаю. спасибо.

PM WWW   Вверх
mes
Дата 16.1.2011, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  15.1.2011,  23:18 Найти цитируемый пост)
вы говорите о методе, вызываемом руками. это никакой не постконструктор ;)

почему руками ? все это дело можно слегка автоматизировать.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 16.1.2011, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  16.1.2011,  00:28 Найти цитируемый пост)
все это дело можно слегка автоматизировать.. 

скажите, есть ли способ это автоматизировать, не сильно нарушая структуру проекта? может наследованием от какого-нибудь базового класса? я пытался - не допёр.
фабрика - не совсем то, т.к. с интеграцией могут возникнуть сложности, не говоря уже о модернизации рабочего кода.

PM WWW   Вверх
mes
Дата 16.1.2011, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  15.1.2011,  23:32 Найти цитируемый пост)
скажите, есть ли способ это автоматизировать, не сильно нарушая структуру проекта?

думаю нет.. ибо в "чистом виде" это "противоречит "политики С++..

Добавлено через 45 секунд
Цитата(boostcoder @  15.1.2011,  23:32 Найти цитируемый пост)
 может наследованием от какого-нибудь базового класса? 

не наследованием , а оборачиванием... 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 16.1.2011, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  16.1.2011,  00:35 Найти цитируемый пост)
не наследованием , а оборачиванием...

что-то типа:
Код

template<typename T>
struct wrap {
};

...


struct implementation: wrap<implementation> {
};

?

или "оборачиванием" буквально?
PM WWW   Вверх
mes
Дата 16.1.2011, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  15.1.2011,  23:39 Найти цитируемый пост)
что-то типа:

нет crtp тут не пройдет.. нет внешнего по отношению к конструктору креатора.. 
в простом виде выглядит так :
http://liveworkspace.org/code/8f3dbcca9aa8...f7be5a589cbd9f1




Это сообщение отредактировал(а) mes - 16.1.2011, 00:46


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.