summaryrefslogtreecommitdiff
path: root/Client/Source/Utilities/Singleton.h
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Source/Utilities/Singleton.h')
-rw-r--r--Client/Source/Utilities/Singleton.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/Client/Source/Utilities/Singleton.h b/Client/Source/Utilities/Singleton.h
new file mode 100644
index 0000000..f864a42
--- /dev/null
+++ b/Client/Source/Utilities/Singleton.h
@@ -0,0 +1,43 @@
+#ifndef SINGLETON_H
+#define SINGLETON_H
+
+template<class T>
+class Singleton
+{
+public:
+
+ static T* Instance()
+ {
+ if (!instance) instance = new T;
+ return instance;
+ }
+
+ static void Destroy()
+ {
+ delete instance;
+ instance = nullptr;
+ }
+
+protected:
+
+ Singleton()
+ {
+ instance = static_cast<T*>(this);
+ };
+
+ virtual ~Singleton() {};
+
+ static T* instance;
+
+private:
+
+ Singleton(const Singleton& singleton);
+
+ Singleton& operator = (const Singleton& singleton);
+
+};
+
+template<class T>
+T* Singleton<T>::instance = nullptr;
+
+#endif \ No newline at end of file