在c ++中使用enable_shared_from_this时检查现有的shared_ptr?

时间:2010-11-03 18:43:35

标签: c++ boost shared-ptr reference-counting

除了捕获在尝试在作为原始指针的指针上调用shared_from_this()时抛出的bad_weak_ptr错误之外,还有一种方法可以测试对象是否被引用计数?

我有处理原始指针和共享指针的函数,我想确保在使用错误的错误时错误是显而易见的吗?我当然可以抓住错误,但我只是想知道是否有一种简单的方法来测试这种特殊情况?

2 个答案:

答案 0 :(得分:2)

std::enable_shared_from_this<T>::shared_from_this()的调用对于现有的有效对象或指向它的指针永远不会失败。编辑:...如果std::shared_ptr<YourClass>至少有一个YourClass std::enable_shared_from_this<YourClass>shared_from_this()的实例。这是一个比第一个更严格的陈述,如果被误解我会道歉。

通过仅创建类的shared_ptr个实例,可以确保YourClass的有效性。除了捕获异常之外,无法检查shared_ptr实例是否由{{1}}管理。

答案 1 :(得分:1)

不要混合原始指针和托管指针。