Knightmare |
09.01.2010 18:29 |
Ответ: Вопрос-задачка
Цитата:
А теперь вопрос мой:
как можно в объявлении класса (к примеру если оно в отдельном файле) сразу объявить глобальный объект?
|
В объявлении класса глобальный объект - никак. Это бред сам по себе, т.к. глобальный объект предполагает инстанцирование в единственном экземпляре. Хотя с другой стороны, класс может содержать статичный член своего же типа. Так же, в большинстве случаев, глобальная переменная тупо не нужна (например ее делают для какого-то менеджера ресурсов или типа того). Можно (и нужно) юзать синглтон. Тривиальная реализация - закрываем конструктор и деструктор, класс хранит статичный указатель на созданный объект и статичный метод для доступа к нему. Грубо говоря:
PHP код:
class MySingleton { private: static MySingleton * _instance; private: MySingleton(); MySingleton(const MySingleton & other); MySingleton & operator =(const MySingleton & other); ~MySingleton(); public: static MySingleton * Instance() { if(_instance == NULL) _instance = new MySingleton(); return _instance; } };
MySingleton * MySingleton::_instance = NULL;
При желании у Александрески довольно подробно расписаны синглтоны. Но не рекомендую открывать его книги пока, моск сгорит.
|