Синглтон, позволяющий создавать полиморфные объекты
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 30.01.04 16:51
Оценка:
...и отвечающий за создание/уничтожение объекта.

Что хочется:

1) Все операции создания/копирования/присвоения/уничтожения закрыты.
template <class T> /* необязательно, но не понятно, как без этого */
class singleton : boost::noncopyable
{
private:
    singleton() {  }
    virtual ~singleton() { }
};

и некоторая функция instance(), которая при первом вызове инициализирует синглтон, и при всех вызовах возвращает объект класса, являющегося синглтоном.

2) Должна быть возможность создания полиморфных объектов.
class abstract : public singleton<abstract>
{
    /* .... */
};

class concrete : public abstract
{
    /* .... */
};

// как создать объект класса concrete?


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

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