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
projects:singleton_template [2015/11/17] terenceprojects: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: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 =====
  
-FIXME+The Singleton Template is a [[wp>Template_(C%2B%2B)|C++ template class]] that allows you to define your own singleton classes as inheriting from a single base class.
  
 +This provides a few benefits over other techniques:
 +
 +  * 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)
 +
 +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 28: Line 37:
  
 <code c++> <code c++>
-#include "singleton.h" +#include "tSingleton.h"
-using namespace tjgrant;+
 </code> </code>
  
   * Create your own singleton class, ensuring that:   * Create your own singleton class, ensuring that:
  
-  - You inherit from **''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 41: Line 49:
 <code c++> <code c++>
 class MyClass class MyClass
-: public singleton<MyClass>+: public tSingleton<MyClass>
 { {
 protected: protected:
Line 54: Line 62:
     //Methods go here     //Methods go here
  
-    friend class singleton<MyClass>;+    friend class tSingleton<MyClass>;
 }; };
 </code> </code>
Line 101: Line 109:
 class MyClass class MyClass
 : public MyBase, : public MyBase,
-  public singleton<MyClass>+  public tSingleton<MyClass>
 </code> </code>
  
Line 115: 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)