Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
projects:singleton_template [2015/12/07] – [About] terenceprojects:singleton_template [2016/07/05] – 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:tjgrant@tatewake.com|Terence J. Grant]]   * **Author:** [[mailto:tjgrant@tatewake.com|Terence J. Grant]]
   * **License:** [[http://opensource.org/licenses/MIT|MIT License]]   * **License:** [[http://opensource.org/licenses/MIT|MIT License]]
-  * **Last Update:** 2015-11-15+  * **Last Update:** 2015-12-21
   * **Donate:** [[:donate|Your donations are appreciated!]]   * **Donate:** [[:donate|Your donations are appreciated!]]
  
Line 14: Line 17:
 After downloading, make sure to follow the [[#how_to_use|how to use]] instructions below; they're worth reading. After downloading, make sure to follow the [[#how_to_use|how to use]] instructions below; they're worth reading.
  
-FIXME+  * Latest version: [[https://github.com/tatewake/singleton-template|Singleton Template(C++) version 2015-12-21 on GitHub]]
  
 ===== About ===== ===== About =====
Line 24: Line 27:
   * Consistent method interface among all singletons (all singletons will have a **''::getInstance()''** method)   * Consistent method interface among all singletons (all singletons will have a **''::getInstance()''** method)
   * Never having to copy / paste code for singleton creation (which is good if, for instance, best practices change)   * Never having to copy / paste code for singleton creation (which is good if, for instance, best practices change)
-   + 
-Singleton creation is performed via the "Meyers Singleton" technique, described in the book [[http://www.amazon.com/gp/product/0321334876/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321334876&linkCode=as2&tag=terjgra-20&linkId=FWGRI7VTSLU2WGVB|Effective C++ by Scott Meyers]]. So essentially, this class is a "Meyers Singleton C++ template class."+The singleton creation method in **''::getInstance()''** is via the "Meyers Singleton" technique, described in the book [[http://www.amazon.com/gp/product/0321334876/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321334876&linkCode=as2&tag=terjgra-20&linkId=FWGRI7VTSLU2WGVB|Effective C++ by Scott Meyers]]. So essentially, this class is a "Meyers Singleton C++ template class."
 ===== How to Use ===== ===== How to Use =====
  
Line 39: Line 42:
   * Create your own singleton class, ensuring that:   * Create your own singleton class, ensuring that:
  
-  - You inherit from **''tjgrant::singleton<MyClass>''**, where **''MyClass''** is the name of your class+  - You inherit from **''tSingleton<MyClass>''**, where **''MyClass''** is the name of your class
   - Your **constructor**'s access method is **''protected''**   - Your **constructor**'s access method is **''protected''**
   - Your **destructor** is **''virtual''**   - Your **destructor** is **''virtual''**
Line 46: Line 49:
 <code c++> <code c++>
 class MyClass class MyClass
-: public tjgrant::singleton<MyClass>+: public tSingleton<MyClass>
 { {
 protected: protected:
Line 59: Line 62:
     //Methods go here     //Methods go here
  
-    friend class tjgrant::singleton<MyClass>;+    friend class tSingleton<MyClass>;
 }; };
 </code> </code>
Line 106: Line 109:
 class MyClass class MyClass
 : public MyBase, : public MyBase,
-  public tjgrant::singleton<MyClass>+  public tSingleton<MyClass>
 </code> </code>
  
Line 120: Line 123:
 ===== History ===== ===== History =====
  
-**November 152015**+**July 52016**
  
 +  * Removed the namespace, renamed class from "singleton" to "tSingleton" like it originally was
 +
 +**December 21, 2015**
 +
 +  * Added GitHub link to download section
   * First public release   * First public release
  
 +**November 15, 2015**
 +
 +  * Created project page
Print/export
QR Code
QR Code Singleton Template (C++) (generated for current page)