#ifndef __STATICMODULE_H #define __STATICMODULE_H #include <iostream> #include <cassert> template <class T> class StaticModule { protected: static T* s_instance; public: static void init() { if (s_instance) assert(0); s_instance=new T; } static T& getInstance() { if (s_instance == 0) { //cout<<"Module "<<s_instance->myName()<<" is not initialized."<<endl; assert(0); } //boost::mutex mutex; //boost::mutex::scoped_lock scoped_lock(mutex); return *s_instance; } static T* getInstancePtr() { if (s_instance == 0) { assert(0); } return s_instance; } }; template <class T> T* StaticModule<T>::s_instance = 0; #endif //__STATICMODULE_H
转载于:https://www.cnblogs.com/propheteia/archive/2012/07/17/2595442.html