![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mrgloom |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
можете пояснить данный код? точнее подход.
в самом файле где определен класс диалога
потом в другом месте (главном диалоге?) вызывается как
я так понимаю это замена вызова немодального диалога. т.е. если бы я сделал так
то так мне потом в деструкторе CMain пришлось вызывать delete. |
||||||
|
|||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Это называется singleton. Используется, когда в программе может быть только один экземляр класса.
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
что такое static функция или static переменая в классе понятно, а что такое static object не очень.
непонятно когда объект создаётся и когда уничтожается и какая у него область видимости, ведь получается что то типа глобального объекта? + у меня еще при повторном открытие диалога если использовать
падает в wincore.cpp line 638, а 1 раз открывается нормально. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Уничтожается при завершении приложения (статические объекты деинициализируются в порядке обратном их инициализации - проще говоря, после инициализации деструктор объекта передается в atexit). Да, синглтон необходим именно для того, чтобы объект был глобальным, но прямого доступа к нему не было - только через метод. |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Объект -- та же переменная, только определённая пользователем. Так что разницы между static int other и static UserDefinedClass another, в общем то, никакой и и нет. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
| mrgloom |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
посмотрел под дебагером, при первом обращении GetInstance() вызывается консруктор\ происходит инициализация диалога. при втором обращение ничего не происходит, но по идее измененный диалог так и должен храниться в static переменной, но почему же тогда при втором вызове GetInstance().Сreate происходит падение? возможно потому что при закрытие диалога что то портиться? причем даже так падает без закрытия диалога, когда вызывается 2 раза.
ну так то да, только у объекта есть конструктор. Это сообщение отредактировал(а) mrgloom - 5.9.2013, 13:53 |
||||||
|
|||||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
mrgloom, не бывает экземпляров объектов. Бывают экземпляры классов, они же объекты.
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |