1

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

我有一个

std::shared_ptr<Shape> m_shape; 

我正在尝试做

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

我想检查并查看 m_shape 是否处于活动状态并正在使用......并且 reset 表示何时停止使用 shared_ptr

但我在 m_shape 上不断收到错误,说表达式必须有算术、枚举、指针

4

1 回答 1

1

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

相反,shared_ptr有一个转换bool告诉你它当前是否正在管理一个对象。所以你可以说

if (m_shape) {
    // m_shape has an object
}
于 2013-03-28T06:14:44.027 回答