如何管理不同类中原始指针和unique_ptr的混合使用?(例外?)

use*_*460 2 c++ exception class unique-ptr

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

class Container { std::unique_ptr<A> ptrA; }
Run Code Online (Sandbox Code Playgroud)

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

class B { A* a;
B(*A param) : a(param) }
Run Code Online (Sandbox Code Playgroud)

它们是通过以下方式创建的: B b = B(Container.ptrA.get() );

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

我的问题是有关管理1%情况的设计,以便我的程序可以尝试重新加载数据并避免突然崩溃,您是否会使用异常?如果是这样,您将在哪里尝试/抓住?

谢谢 !

ale*_*exc 5

使用时,std::unique_ptr您要做出设计决策:Container拥有指针。尝试解决这个问题只会使您的生活更加艰难。

但是实际上你说的话Container很有意义B。您为什么不只是强制执行此操作,而不是过分防御可能会以其他几种方式破坏程序的错误?