2013-03-28 92 views
1

我想檢查是否一個shared_ptr沒有調用shared_ptr.reset()shared_ptr的錯誤表達必須有算術,枚舉,指針

我有一個

std::shared_ptr<Shape> m_shape; 

我試圖做

if(m_shape.reset()==false) 
{ 
    dothis(); 
} 

我要檢查,看看是否m_shape是積極和正在使用...和復位說,當停止使用一個shared_ptr

但我不斷收到m_shape上的錯誤,表示必須有算術,枚舉,指針

回答

1

reset()是一個重置shared_ptr的函數,並返回void。它肯定不會告訴你,如果shared_ptr目前管理的對象。事實上,稱這是保證它不再管理的對象。

相反,shared_ptr具有轉換到bool告訴你,如果它目前管理的對象。所以你可以只說

if (m_shape) { 
    // m_shape has an object 
} 
+0

我想檢查是否正在使用shared_ptr – user1665569 2013-03-28 06:17:33

+0

謝謝@KevinBallard – user1665569 2013-03-28 06:21:09

相關問題