Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2012, 15:21   #1
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
Восклицание Поможет ли использ. static в этом случае

Всем привет.
Ситуация заключается в следующем.
У меня есть много различных классов. Но среди них есть такое, доступ к которому необходим из многих других классов. Отмечу, что экземпляр этого требуемого класса во всей программе один.
До недавнего момента передавал каждому классу указатель на этот, назовем его глобальным, класс.
Но недавно возник вопрос - а можно ли сделать объявление переменной этого глобального класса во всех остальных статическим, т.б. static, и не нужно будет каждый раз возиться с этими указателями.
Еще раз отмечу, что экземпляр этого глобально класса один, и в main'e память под него выделяется динамически(т.е. это указатель на объект)

Можно ли эту ситуацию разрешить подобным образом, или как-то боле проще, чем передавать в каждый класс этот пресловутый указатель?
monolit111 вне форума Ответить с цитированием
Старый 15.08.2012, 15:26   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2monolit111
man singleton
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 15.08.2012, 15:28   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну да, сделайте приватный конструктор(чтоб никто не создавал) и статический член типа класса и статический метод Get, который будет выдавать ссылку на статический обьект.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2012, 15:49   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

http://en.wikipedia.org/wiki/Lazy_initialization
waleri вне форума Ответить с цитированием
Старый 15.08.2012, 16:12   #5
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

Цитата:
ну да, сделайте приватный конструктор(чтоб никто не создавал) и статический член типа класса и статический метод Get, который будет выдавать ссылку на статический обьект.
А этот конструктор сработает хотя бы один раз? Т.е. если я создам указатель на
Цитата:
статический член типа класса
, память под него можно выделить в этом конструкторе, или необходимо создать еще функцию инициализации(т.е. где эта память будет выделяться)?
Да, и если сделать этот указательно класс открытым, то можно будет обойтись без функции-возвращающей оный? т.е. обращаться напрямую к этой переменной?

Последний раз редактировалось monolit111; 15.08.2012 в 16:15.
monolit111 вне форума Ответить с цитированием
Старый 15.08.2012, 16:39   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Да, и если сделать этот указательно класс открытым, то можно будет обойтись без функции-возвращающей оный? т.е. обращаться напрямую к этой переменной?
обязаность этой функции проверить создан ли обьект.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2012, 16:42   #7
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

Спасибо всем, все вопросы решены.
monolit111 вне форума Ответить с цитированием
Старый 15.08.2012, 17:10   #8
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

Спасибо всем, все вопросы решены.

Последний раз редактировалось monolit111; 15.08.2012 в 17:39.
monolit111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использ. ZLIB для сжатия файла при передаче сервер-клиент Pcrepair Общие вопросы Delphi 0 28.06.2011 19:15
static Gen_r_questions PHP 7 05.04.2011 15:12
Вычислить:у=а*(в*в*в)*с,где а,в,с-двоичные числа.Для хранения числа использ.массив! Таняпервокурсница Помощь студентам 4 04.06.2010 12:08
По-поводу Static volnixx PHP 3 11.03.2009 12:04