我的类的一个成员是 boost::scoped_ptr
,它在创建对象时设置为 (T*)0
。该类有一个 init()
方法,它实际上用一个新对象初始化智能指针。
但是,如果在智能指针具有有效引用之前抛出异常,它会非常不智能地尝试删除 null(释放)或断言(调试)。
如何在不修改原始源代码的情况下让它在销毁时忽略空指针;并且,如果这不可能,是否有更合适的备用智能指针类来代替?
最佳答案
您可以尝试使用 std::unique_ptr
而不是 boost::scoped_ptr
并提供自定义删除函数来检查底层对象的状态 - 参见 http://en.cppreference.com/w/cpp/memory/unique_ptr .
关于c++ - 在分配 scoped_ptr 之前处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908854/