forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Вопрос-задачка (http://forum.boolean.name/showthread.php?t=11692)

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

При желании у Александрески довольно подробно расписаны синглтоны. Но не рекомендую открывать его книги пока, моск сгорит.

Praedo 09.01.2010 19:12

Ответ: Вопрос-задачка
 
Нашел конспект, чудом.

там было написано вот так:

PHP код:

class Stone
{
public:
int a;
Stone();
~
Stone();
}
obj

Что происходит в этом случае? Вроде бы он объявляется


Часовой пояс GMT +4, время: 16:29.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot