Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
projects:singleton_template [2015/11/15] – [Q & A] terence | projects:singleton_template [2016/07/05] (current) – July 5, 2016 terence | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Singleton Template (C++) ====== | ====== Singleton Template (C++) ====== | ||
+ | |||
+ | //An inheritance-based way to make singleton classes in C++// | ||
+ | |||
===== License ===== | ===== License ===== | ||
Line 5: | Line 8: | ||
* **Author:** [[mailto: | * **Author:** [[mailto: | ||
* **License: | * **License: | ||
- | * **Last Update:** 2015-11-15 | + | * **Last Update:** 2015-12-21 |
* **Donate:** [[: | * **Donate:** [[: | ||
Line 14: | Line 17: | ||
After downloading, | After downloading, | ||
- | FIXME | + | * Latest version: [[https:// |
===== About ===== | ===== About ===== | ||
- | FIXME | + | The Singleton Template is a [[wp> |
+ | This provides a few benefits over other techniques: | ||
+ | |||
+ | * Consistent method interface among all singletons (all singletons will have a **'':: | ||
+ | * Never having to copy / paste code for singleton creation (which is good if, for instance, best practices change) | ||
+ | |||
+ | The singleton creation method in **'':: | ||
===== How to Use ===== | ===== How to Use ===== | ||
Line 28: | Line 37: | ||
<code c++> | <code c++> | ||
- | #include "singleton.h" | + | #include "tSingleton.h" |
</ | </ | ||
* Create your own singleton class, ensuring that: | * Create your own singleton class, ensuring that: | ||
- | - You inherit from **'' | + | - You inherit from **'' |
- Your **constructor**' | - Your **constructor**' | ||
- Your **destructor** is **'' | - Your **destructor** is **'' | ||
Line 40: | Line 49: | ||
<code c++> | <code c++> | ||
class MyClass | class MyClass | ||
- | : public | + | : public |
{ | { | ||
protected: | protected: | ||
Line 53: | Line 62: | ||
//Methods go here | //Methods go here | ||
- | friend class tjgrant:: | + | friend class tSingleton< |
}; | }; | ||
</ | </ | ||
Line 89: | Line 98: | ||
//If you have a question not answered here, please feel free to [[mailto: | //If you have a question not answered here, please feel free to [[mailto: | ||
+ | |||
+ | === Inheritance? | ||
* **Q:** My class already inherits from another class; can I still use this? | * **Q:** My class already inherits from another class; can I still use this? | ||
Line 98: | Line 109: | ||
class MyClass | class MyClass | ||
: public MyBase, | : public MyBase, | ||
- | public | + | public |
</ | </ | ||
+ | |||
+ | === Thread Safety? === | ||
* **Q:** Is this library [[wp> | * **Q:** Is this library [[wp> | ||
Line 106: | Line 119: | ||
* After the first time, **'':: | * After the first time, **'':: | ||
* //Note: That said, I would suggest only accessing **'':: | * //Note: That said, I would suggest only accessing **'':: | ||
- | |||
- | * **Q:** Singletons / Templates / Multiple Inheritance is horrible and you shouldn' | ||
- | * **A:** I disagree. Tools are tools, you're free to use them **or not use them** as you wish. | ||
- | * //Note: If you really do feel this way, realize that these are your " | ||
If you've found this project useful, [[: | If you've found this project useful, [[: | ||
===== History ===== | ===== History ===== | ||
- | **November 15, 2015** | + | **July 5, 2016** |
+ | * Removed the namespace, renamed class from " | ||
+ | |||
+ | **December 21, 2015** | ||
+ | |||
+ | * Added GitHub link to download section | ||
* First public release | * First public release | ||
+ | **November 15, 2015** | ||
+ | |||
+ | * Created project page |