Re[3]: Статическая переменная в классе???
От: Batiskaf Израиль http://www.mult.ru/
Дата: 08.10.04 11:33
Оценка:
Здравствуйте, just_bear, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


_>Можно сэмулировать статический конструктор (конструктор класса) из С#. Например, так (примите как набросок):


_>

_>#define STATIC_CTOR(x) static Initiator<x> m_initiator;

_>template<class Initable>
_>class Initiator
_>{
_>public:
_> Initiator(){Initable::init();}
_>};


_>class A
_>{
_>  STATIC_CTOR(A);
_>  static void init(){.../*здесь инициализация*/}
_>...
_>};

_>


Можно и без лишних статиков обойтись, с ними всегда проблема:


template<typename T>
struct StaticConstructor
{
    template<typename T>
    struct StaticConstructorInner
    {
        StaticConstructorInner()
        {
            T::init();
        }

        ~StaticConstructorInner()
        {
            T::release();
        }
    };

    StaticConstructor()
    {
        static StaticConstructorInner<T> ctor;
    }
};

class A : public StaticConstructor<A>
{
public:
void init(){}
void release(){}
};


И потом стоит подумать заводить ли статик для лога, может стоит это зацентрализовать в каком то синглтоне глобальном, с кучей других сервисов, упрозающих лог, наверняка логи пригодятся не только в классе PlanetTranay.
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.