shared_ptr错误表达式必须具有算术,枚举,指针

时间:2013-03-28 06:13:09

标签: c++ pointers shared-ptr

我正在尝试检查shared_ptr是否未调用shared_ptr.reset()

我有一个

std::shared_ptr<Shape> m_shape; 

我正在尝试

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

我想查看并查看m_shape是否处于活动状态并正在使用...并且当shared_ptr停止使用时重置说明

但我一直在m_shape上得到一个错误,说表达式必须有算术,枚举,指针

1 个答案:

答案 0 :(得分:1)

reset()是一个重置shared_ptr的函数,并返回void。它当然不会告诉您shared_ptr当前是否正在管理对象。实际上,调用它可以保证它不再管理对象。

相反,shared_ptr转换为bool,告诉您它是否正在管理对象。所以你可以说

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