シングルトン + Boost::Shared_Ptr
こうしておけば、シングルトンの破棄もスマートポインタまかせ。
1
2 class SingleTon
3 {
4 private:
5 SingleTon() {}
6 static boost::shared_ptr<SingleTon> me;
7
8 public:
9 ~SingleTon()
10 {
11 cout << "Delete SingleTon" << endl;
12 }
13 static SingleTon* getInstance()
14 {
15 return me.get();
16 }
17
18 char* Name( void )
19 {
20 return "Name";
21 }
22
23 };
24 boost::shared_ptr<SingleTon> SingleTon::me = boost::shared_ptr<SingleTon>( new SingleTon );
25
26 void Main( void )
27 {
28 cout << SingleTon::getInstance()->Name() << endl;
29 }
30
31 /*---- output ----
32 * Name
33 * Delete SingleTon
34 */
35