Re: Как передать в Синглтон Майерса параметры конструктора?
От: einstein  
Дата: 31.07.06 17:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>template <typename BaseT>
А>class Singleton
А>    : public BaseT
А>    , private boost::noncopyable
А>{
А>private:
А>    Singleton()
А>    {
А>    }

А>    ~Singleton()
А>    {
А>    }

А>public:
А>    static Singleton& instance(Singleton* p = new Singleton() )
А>    {
А>        static std::auto_ptr<Singleton> _instance ( p );
А>        return _instance.get();
А>    }
А>};
А>


А>Как модифицировать этот класс, чтобы он создавал экземпляр _instance, если у BaseT нет конструктора по умолчанию? Например, в качестве класса BaseT я использую класса Trace (или Log) для вывода отладочной информации, в конструктор которого передаю имя файла для лога. Используется RAII, в конструкторе файл открывается, в диструкторе закрывается.


X& x = XSingleton<X>::instance(new X(....));

В данном случае Singleton будет следить за созданным вами объектом (то есть мы передаем владение).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.