#ifndef SINGLETONBASE_H #define SINGLETONBASE_H //做一个单例 #include template class SingletonBase { public: // SingletonBase(); // ~SingletonBase(); void add(const KeyType& key,const ValueType& val) { QHash *t=SingletonBase::ht; (*t)[key]=val; } bool contains(const KeyType& key) { return SingletonBase::ht->contains(key); } ValueType get(const KeyType& key) { QHash *t=SingletonBase::ht; return (*t)[key]; } void initInstance() { if(SingletonBase::ht) { delete SingletonBase::ht; SingletonBase::ht==NULL; } SingletonBase::ht=new QHash; } protected: class CG // 它的唯一工作就是在析构函数中删除CSingleton的实例 { public: ~CG() { if (SingletonBase::ht) delete SingletonBase::ht; } }; static CG Garbo; // 定义一个静态成员,在程序结束时,系统会调用它的析构函数 static QHash *ht; }; template QHash *SingletonBase::ht=NULL; #endif // SINGLETONBASE_H