(C++) Наследуемый Singleton класс. Как реализовать?

Можно ли реализовать наследуемый Singleton класс? И как это сделать?

То есть, если есть класс CSingleton, который реализует Singleton паттерн.
Наследуем класс CSingleChild от CSingleton.
Теперь объект класса CSingleChild создастся единожды.

P.S. Можно без thread-save. На примере Майерса.
  • Вопрос задан
  • 4001 просмотр
Решения вопроса 1
Trrrrr
@Trrrrr
один из вариантов через тимплейты:
Что то вроде:
#include <iostream>
template <class T> class Singleton 
{
protected:
	Singleton(){};
	Singleton(const Singleton&);

public:
	static T& GetInstance()
	{
		static T instance;

		return instance;
	}
};

class AnotherSingleton : public Singleton<AnotherSingleton>
{
private:
	int i;

public:
	void SomeFunc()
	{
		i = 10;
		std::cout<< i;
	}
};
 
int _tmain(int argc, _TCHAR* argv[])
{
	AnotherSingleton::GetInstance().SomeFunc();
	return 0;
}

Это примерный код, его можно улучшить.

Кстати в с++11 такой код уже будет являться тред сейфовым.

На самом деле такой класс можно очень хорошо улучшить, но для примера подойдет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы