Тема: СИНГЛТОНЫ
Показать сообщение отдельно
Старый 23.08.2009, 12:03   #3
jimon
 
Сообщений: n/a
Ответ: СИНГЛТОНЫ

вот довольно качественное решение :
1) в хидере где нужен доступ к синглтону пишем
EXPORT_TYPE my_type * EXPORT_CALL GetMyType();
EXPORT_TYPE void EXPORT_CALL CreateSingletonMyType();
2) в реализации пишем такое :
my_type * _self_my_type = NULL;
my_type * EXPORT_CALL GetMyType()
{
return _self_my_type;
}
void EXPORT_CALL CreateSingletonMyType()
{
_self_my_type = new my_type;
}
void SetMyType(my_type * _self)
{
if (_self_my_type && ( _self != NULL))
{
FATAL_ERROR
}
else
_self_my_type = _self;
}


my_type::my_type()
{
SetMyType(this);
...
}

my_type::~my_type()
{
SetMyType(NULL);
}
3) в функции инициализации библиотеки просто вызываем CreateSingletonMyType, а потом просто удалям нужный нам класс и всё
в принципе CreateSingletonMyType можно и не выносить на обозрение

ps. всё это делается через макросы
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо за это полезное сообщение:
Horror (23.08.2009), Mr_F_ (23.08.2009)