c++ - 如何管理不同类中原始指针和 unique_ptr 的混合使用? (异常(exception)?)

标签 c++ class exception unique-ptr

我有一个用 unique_ptr 存储对象的容器,为简单起见,假设我只有一个对象:

class Container { std::unique_ptr<A> ptrA; }

我还有使用该对象的类。这些类在构造时采用指向这些对象的原始指针:

class B { A* a;
B(*A param) : a(param) }

它们是用 : B b = B(Container.ptrA.get() );

创建的

Container 类应该比 B 类 长寿。但是,我希望我的整个程序不会崩溃,以防我的容器类中出现问题或错误,并且 unique_ptr 超出范围并被删除。

我的问题是关于管理这 1% 案例的设计,以便我的程序可以尝试重新加载数据并避免突然崩溃,您会使用异常吗?如果是这样,你会在哪里做 try/catch ?

谢谢!

最佳答案

当您使用 std::unique_ptr 时,您正在做出设计决策:Container 拥有指针。试图解决这个事实只会让你的生活更加艰难。

但事实上你说 ContainerB 长。你为什么不强制执行它,而不是过度防御可能会以其他几种方式破坏你的程序的错误?

关于c++ - 如何管理不同类中原始指针和 unique_ptr 的混合使用? (异常(exception)?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301515/

相关文章:

c++ - 将工程应用程序从独立移动到内部 CAD

javascript - 原型(prototype)继承设置

java - 什么时候应该让应用程序因为 Java 中的异常(设计问题)而崩溃?

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

c++ - boost::random 每次生成相同的数字

c++ - 我如何支持内部列表的基于范围的语句? (c++)

c++ - std::equal_range 与 lambda

Java - 接受用户输入来创建未知数量的类对象/数组/数组列表

Java:查找调用者类

c - sigsuspend 等价于 sigprocmask、pause、sigprocmask 的原子系列?