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