Показать сообщение отдельно
Старый 09.01.2010, 18:29   #16
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Вопрос-задачка

А теперь вопрос мой:
как можно в объявлении класса (к примеру если оно в отдельном файле) сразу объявить глобальный объект?
В объявлении класса глобальный объект - никак. Это бред сам по себе, т.к. глобальный объект предполагает инстанцирование в единственном экземпляре. Хотя с другой стороны, класс может содержать статичный член своего же типа. Так же, в большинстве случаев, глобальная переменная тупо не нужна (например ее делают для какого-то менеджера ресурсов или типа того). Можно (и нужно) юзать синглтон. Тривиальная реализация - закрываем конструктор и деструктор, класс хранит статичный указатель на созданный объект и статичный метод для доступа к нему. Грубо говоря:
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
При желании у Александрески довольно подробно расписаны синглтоны. Но не рекомендую открывать его книги пока, моск сгорит.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Harter (09.01.2010)