1 // singleton.h 2 3 #ifndef SINGLETON_H 4 #define SINGLETON_H 5 6 // 单例基类模板 7 template <class T> 8 class Singleton 9 { 10 public: 11 static T& give_me() 12 { 13 static T s_inst; 14 return s_inst; 15 } 16 17 private: 18 // 禁止实现拷贝构造与拷贝赋值函数 19 explicit Singleton(const Singleton&rhs); 20 Singleton & operator = (const Singleton &rhs); 21 22 protected: 23 explicit Singleton() {} 24 virtual ~Singleton() {} 25 }; 26 27 #endif // SINGLETON_H
1 #ifndef TEST_MANAGER_H 2 #define TEST_MANAGER_H 3 4 #include "singleton.h" 5 6 class TestManager : public Singleton7 { 8 friend class Singleton ; 9 10 private: 11 explicit TestManager(); 12 virtual ~TestManager(); 13 14 public: 15 void func(); 16 }; 17 18 #endif // TEST_MANAGER_H