![]() |
|
![]() ![]() ![]() |
|
Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Любитель, На самом деле можно найти пример когда кто-нибудь бы пострадал от создания окон в конструкторах. Объект окна создается, но прежде чем создать окно ждет каких-либо данных.
А вот от того как сделано вряд ли кто-нибудь сильно страдает. |
|||
|
||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Так он это и делает (деструктор CWnd разрушает окно). Но ведь к этому моменту твой класс уже разрушен - сообщение WM_DESTROY посылается, но твоего объекта уже нет, и приходит оно базовому классу, о чем и предупреждается. Это уже С++ - из конструктора-деструктора нельзя вызывать виртуальные функции. Т.е. можно, но получишь не то, что ожидаешь... Что касается класса fstreem - это совсем другое дело. Ты часто создаешь производные от него классы? Или все таки пользуешься именно fstream?
Физическое окошко находится вне компетенции MFC. MFC не является шедевром дизайна (вспомните сколько ей лет), она всего лишь тонкая оболочка над WinAPI, чем и ценна, с моей точки зрения. -------------------- ... |
||||
|
|||||
Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Вот, да это основное великолепие. Именно этого не могут понять люди переходящие с VCL, за сложностью не видят гибкости. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
Попробуй найти! В конце концов можно создавать объекты на хипе. Согласен. Из-за привязанности к WinAPI в MFC получается на мой взгляд слабая привязанность к нормальной объектно-ориентированной модели. Это не есть плохо, но есть неприятно... |
|||
|
||||
lemax |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 14.10.2007 Репутация: нет Всего: 1 |
НАПОМИНАНИЕ.
В ДИСТРУКТОРЕ ЗАПРЕЩЕН КОД КОТОРЫЙ МОЖЕТ СОЗДАВАТЬ ИСКЛЮЧЕНИЯ Почему: При исключении начинает высвобождаться память. А так как память объекта на который указат this , еще не высвобождено, то повторно будет вызываться диструктор (*this). Может зациклит не по детски. В конструкторе тоже не стоит использовать код, бросающий исключения |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
lemax, это в том смысле, что ты еще в июле 2006 впал в анабиоз, и вот только очнулся???
Только дата поста может извинить его ... гм... глубокомыслие ![]() -------------------- ... |
|||
|
||||
lemax |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 14.10.2007 Репутация: нет Всего: 1 |
А при чем здесь дато поста? Когда я пытаюсь найти решение своей проблемы, то мне по барабану на дату, когда ее решили. А в этой теме есть кадры, которые порываются возложить на диструктор обязанности, которые ему не свойственны, и это очень опасно. Надо же образумить чуваков. Мало ли кто еще (как я) зайдет сюда лет через 200. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |