Posted By

yuconner on 08/04/06


Tagged

patterns design


Versions (?)

Who likes this?

5 people have marked this snippet as a favorite

yuconner
copyleft
yarvin
khouser
drules


Singleton class model


 / Published in: C++
 

Note: This doesn't work in multi-threaded environments, check http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B

Singleton class model then: SingletonClass *pSC = SingletonClass::get_singleton_instance(); pSC->any_public_function(); or: SingletonClass::get_singleton_instance()->any_public_function();

at the end of the program don't forget: SingletonClass::destroy();

  1. //.h
  2. class SingletonClass {
  3.  
  4. static SingletonClass *singleton;
  5. SingletonClass();
  6.  
  7. public:
  8. static SingletonClass * get_singleton_instance();
  9. static void destroy();
  10. ~SingletonClass();
  11. };
  12.  
  13.  
  14. //.cpp
  15. SingletonClass *SingletonClass::singleton = NULL;
  16.  
  17. SingletonClass * SingletonClass::get_singleton() {
  18. if( singleton == NULL ) singleton = new SingletonClass();
  19. return singleton;
  20. }
  21.  
  22. void SingletonClass::destroy() {
  23. if( singleton != NULL ) delete singleton;
  24. singleton = NULL;
  25. }
  26.  
  27. SingletonClass::SingletonClass() {
  28. singleton = this;
  29. }
  30.  
  31. SingletonClass::~SingletonClass() {
  32. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: sudarkoff on January 24, 2007

Seeing how this is a "Popular" code snippet, I wanted to warn everybody, that it is not good for multithreaded environment. For more details: http://www.aristeia.com/Papers/DDJJulAug2004revised.pdf

Posted By: neoguru on October 31, 2007

Yo may find usefull information about Singleton here: http://sourcemaking.com/design_patterns/singleton

You need to login to post a comment.