![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
хотелось бы создать статический класс, который в конструкторе один раз вызывал бы системную функцию,
а после через статические методы можно было бы получать значения (конструктор закрыт) например GetSystemInfo
Но тогда придется получать доступ только через Instance (что не очень удобно) И еще - как тогда удалять этот глобальный объект ? |
|||
|
||||
| Mayk |
|
||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Как вариант раз сделать вот так:
и он удалится сам Как вариант номер два - прочитать про ф-цию atexit. Добавлено @ 19:39
мхо
не так уж неудобно -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||
|
|||||||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
1) Он сам удалится при выходе из программы (если использовать синглтон Мейерса, или atexit)
или 2) Сделать ф-цию destroy(), которая будет удалять объект или 3) открыть ~System(). -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
zss, синглетон Мейерса описан во втором посте.
И рекомендую книгу Александреску. Там много про синглетоны -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Синглтон Мейерса:
ф-ция atexit: (объект по-прежнему создается при первом обращении.)
зы. о, - комо отказывается принимать указатель на с++ ф-цию в ф-цию atexit Это сообщение отредактировал(а) Mayk - 12.1.2006, 22:24 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
| blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
zss, а что тебя смущает? прятать конструктор и/или деструктор в приват - обычная практика, если ты не хочешь, чтобы твой объект кто-то создавал/убивал со стороны. и, как ты можешь видеть, здесь этого не происходит - в main происходит вызов статического паблик метода. а поскольку это метот данного класса, то он имеет доступ ко всем приватным методам - в т.ч. и к конструктору и деструктору.
|
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
ага... убить его нельзя. А так как это указатель, то при выходе из области видимости он сам не умрет (утечка |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
почитай про функцию atexit(). именно она взводится на удаление объекта по выходу из программы. а, как ты сам можешь видеть, с областью видимости для нее все в порядке - вызывает приватную функцию, но поскольку сама вызывается из члена класса (в данном случае - конструктора), то никаких проблем. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |