除了捕获在尝试在作为原始指针的指针上调用shared_from_this()时抛出的bad_weak_ptr错误之外,还有一种方法可以测试对象是否被引用计数?
我有处理原始指针和共享指针的函数,我想确保在使用错误的错误时错误是显而易见的吗?我当然可以抓住错误,但我只是想知道是否有一种简单的方法来测试这种特殊情况?
答案 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)
不要混合原始指针和托管指针。