Is it right way to create sinlgeton class by weak_ptr
c++, c++11, singleton
Solution
The pros and cons of this implementation are already discussed. But there are a bunch of bugs:
1) As this is a template you have to move your implementation into the header or the linker cannot find it.
2) The `.lock()` function of the weak_ptr is not in capitals.
3) Don't forget to instantiate
template<class singleType>
std::weak_ptr<singleType> Singleton<singleType>::m_singleObject;
4) Better use `shareObject = std::make_shared<singleType>(singleType());` instead of the `new`: http://herbsutter.com/gotw/_103/
5) As Konrad mentioned: it's not thread-safe.
Problem
I create a parent class to handle singleton pattern with smart pointer: .h file: ``` template<class singleType> class Singleton { public: static std::shared_ptr<singleType> GetInstance(); private: static std::weak_ptr<singleType> m_singleObject; }; ``` .cpp file: ``` template<class singleType> std::shared_ptr<singleType> Singleton<singleType>::GetInstance() { auto shareObject = m_singleObject.Lock(); if (!shareObject) { shareObject.reset(new singleType); m_singleObject = shareObject; } return shareObject; } ``` Not sure it is the right way to use smart pointer? Any idea? Many Thanks