c++ - 在分配 scoped_ptr 之前处理异常

标签 c++ exception boost smart-pointers

我的类的一个成员是 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/

相关文章:

c++ - 为 boost::ptr_vector 创建一个容器类

c++ - 构建 Boost_1_55_0 的示例异步 TCP 日间服务器

c++ - boost::shared_ptr<T> 和 boost::shared_ptr<const T> 是否共享引用计数?

c++ - 如何将 std::chrono::zoned_time 转换为 std::string

C++:不完整类型

c++ - 在开关菜单中将时间方程的 24 小时格式更改为 12 小时格式的 boolean 语句?

java - 如何正确测试 hibernate 中的约束违规?

c++ - 将多个不同类型的参数发送到一个方法进行处理的最佳方式。 C++

visual-studio-2008 - 如何捕获devenv异常

c# - 在创建对象时在构造函数中抛出异常或预先验证参数?