Guest User

Untitled

a guest
Jul 20th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. template <typename T> class Singleton
  2. {
  3. protected:
  4.  
  5. static T* ms_Singleton;
  6.  
  7. public:
  8. Singleton( void )
  9. {
  10. assert( !ms_Singleton );
  11. #if defined( _MSC_VER ) && _MSC_VER < 1200
  12. int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;
  13. ms_Singleton = (T*)((int)this + offset);
  14. #else
  15. ms_Singleton = static_cast< T* >( this );
  16. #endif
  17. }
  18.  
  19. ~Singleton( void ) { assert( ms_Singleton ); ms_Singleton = 0; }
  20. static T& getSingleton( void ) { assert( ms_Singleton ); return ( *ms_Singleton ); }
  21. static T* getSingletonPtr( void ) { return ms_Singleton; }
  22. };
Add Comment
Please, Sign In to add comment