Seasons.NET

ちょっとした技術ブログです

シングルトン + 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