我創建了一個父類來處理與智能指針Singleton模式創建sinlgeton類正確的做法:是否通過了weak_ptr
.h文件中:
template<class singleType>
class Singleton
{
public:
static std::shared_ptr<singleType> GetInstance();
private:
static std::weak_ptr<singleType> m_singleObject;
};
.cpp文件:
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;
}
不確定這是使用智能指針的正確方法嗎? 有什麼想法?
很多謝謝
所以基本的想法是,一旦所有指向單例的指針超出了範圍,那麼單例就會被刪除。然後,當你需要一個指向單例的指針時,你又創建了一個新的單例?如果是這樣的話,它看起來不錯。還沒有嘗試過,但一切都看起來不錯。 – Danny 2013-04-22 05:57:34
......我對單身人士的想象是在程序還活着的時候,他們不應該'刪除'。不是嗎? – deepmax 2013-04-22 06:02:47
@MM。很多時候,是的。有時它也是「只能有一個,或者只有一個,但沒有更多。」 – WhozCraig 2013-04-22 06:08:01