У меня есть четыре класса, давайте назовем S1, S2, S3 и S4. Эти классы являются одноточечными; каждый из них имеет метод getInstance и finalize - и частную переменную экземпляра.Создание класса SingletonMixin в C++
Теперь, чтобы избежать repeting финализации и методы GetInstance Я пытаюсь сделать класс SingletonMixin, что-то вроде:
template<class T> class SingletonMixin
{
public:
static T* getInstance();
private:
static T* instance;
};
Проблема состоит в следующем: как может экземпляр одноточечное clasess и держать их конструктор частных ?
Редактировать
(осветление)
Я имею в виду, как я могу это сделать:
template<class T> T* SingletonMixin<T>::instance = 0;
template<class T> T* SingletonMixin<T>::getInstance()
{
if (instance == 0)
{
instance = T();
}
return instance;
};
но с частной T конструкцией T()
Благодаря!
Простой ответ: не надо. Синглтоны - это ужасный дизайн, который следует избегать, когда это возможно. – Puppy
Четыре одноэлементных класса? Большинство людей не в состоянии думать о * одном правильном использовании синглетонов. – jalf
@jalf: это просто упражнение, я изучаю язык. – Hugo