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<T> &rhs);
20 Singleton<T>& operator = (const Singleton<T> &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 Singleton<TestManager>
7 {
8 friend class Singleton<TestManager>;
9
10 private:
11 explicit TestManager();
12 virtual ~TestManager();
13
14 public:
15 void func();
16 };
17
18 #endif // TEST_MANAGER_H