Thread-safe singleton implementation template.
- Prevention of copying and assignment
- Automatic memory management
- Simple inheritance model
- C++11 standard compliance
static T& Instance()- Returns single instance reference- Protected constructor/destructor
- Deleted copy/assignment operators
#include <CUtils/Singleton.hpp>
class Logger : public CUtils::Singleton<Logger>
{
friend class Singleton<Logger>;
protected:
Logger() {}
public:
void Log(const std::string& message_a)
{
// Logging implementation...
}
};
int main()
{
// Access singleton instance
Logger::Instance().Log("Application started");
return 0;
}Потокобезопасная реализация шаблона Singleton.
- Запрет копирования и присваивания
- Автоматическое управление памятью
- Простая модель наследования
- Соответствие стандарту C++11
- Шаблонный класс
Singleton static T& Instance()- Возвращает ссылку на единственный экземпляр- Защищенный конструктор/деструктор
- Удаленные операторы копирования/присваивания
#include <CUtils/Singleton.hpp>
class Logger : public CUtils::Singleton<Logger>
{
friend class Singleton<Logger>;
protected:
Logger() {}
public:
void Log(const std::string& message_a)
{
// Logging реализация...
}
};
int main()
{
// Доступ к экземпляру Singleton
Logger::Instance().Log("Программа выполнена");
return 0;
}