Здравствуйте, Аноним, Вы писали:
А>Извиняюсь, вот так надо было написать:
А>Есть такой класс (фрагмент):
А>class PlanetTranay А>{ А> static ofstream logfile;
А>public: А>// А>... А>};
А>переменная logfile — для log-файла по всем объектам этого класса. Как ее проинициализировать? А>Например, так:
А>PlanetTranay::PlanetTranay(void) А>{ А> if (!logfile) А> { А> logfile.clear(); А> logfile.open("c:\\pt.txt", ios::out);
А>... А> } А>}
проблема твоего класса в том, что logfile создастся при первом вызове конструктора, а умрет при первом вызове деструктора, а должен при последнем.
Посему обычно рядом кладется статический счетчик, который инкрементится в конструкторе и декрементится в деструкторе.
т.о. когда вызовется последний деструктор, счетчик обнулится и ты спокойно грохнешь свой logfile
Похожая идея работает с глобальными объектами cin, cout и т.п.
Здравствуйте, just_bear, Вы писали:
_>Здравствуйте, Аноним, Вы писали:
_>Можно сэмулировать статический конструктор (конструктор класса) из С#. Например, так (примите как набросок):
_>
И потом стоит подумать заводить ли статик для лога, может стоит это зацентрализовать в каком то синглтоне глобальном, с кучей других сервисов, упрозающих лог, наверняка логи пригодятся не только в классе PlanetTranay.
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
Здравствуйте, Batiskaf, Вы писали:
B>class A : public StaticConstructor<A> B>{ B>public: B>static void init(){} B>static void release(){} B>}; B>[/ccode]
нужно отметить так же что статическое конструирование будет производиться только на момент первого создания экземпляра класса А, зато меньше будет проблем с определением статических членов класса (на одно меньше).
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
// !!!!!!!!!!!!! СТАТИЧЕСКИЕ ПЕРЕМЕННЫЕ КЛАССА (ЗА ОЧЕНЬ РЕДКИМ ИСКЛЮЧЕНИЕМ // КОНСТАНТЫ ЦЕЛОГО ТИПА )
// ИНИЦИАЛИЗИРУЮТСЯ ВНЕ ТЕЛА КЛАССА , В ГЛОБАЛЬНОЙ ОБЛАСТИ ВИДИМОСТИ
// ЗАПОМИ .
Hello, ScorpZ!
S> // !!!!!!!!!!!!! СТАТИЧЕСКИЕ ПЕРЕМЕННЫЕ КЛАССА (ЗА ОЧЕНЬ РЕДКИМ S> ИСКЛЮЧЕНИЕМ // КОНСТАНТЫ ЦЕЛОГО ТИПА ) // ИНИЦИАЛИЗИРУЮТСЯ ВНЕ ТЕЛА S> КЛАССА , В ГЛОБАЛЬНОЙ ОБЛАСТИ ВИДИМОСТИ // ЗАПОМИ .