我们有一个 C++ 库,我们提供给几个不同的客户。最近,我们从在公共接口中使用原始指针切换到使用 boost::sharedptr。正如您可能猜到的那样,这提供了巨大的好处,因为现在客户不再需要担心谁需要删除什么以及何时删除。当我们进行转换时,我认为这是正确的做法,但让我感到困扰的是,我们必须在我们的公共界面中包含来自第三方库的东西——通常,如果可以的话,你会避免这种事情。我合理化了 boost 现在实际上是 C++ 语言的一部分,我们的用例要求客户端代码和库都保存指向对象的指针。然而最近我们的一位客户问我们是否可以切换到在界面中使用中性智能指针类,因为我们的库本质上是在强迫他们使用特定版本的 boost——我当然理解和欣赏这一点。所以现在我想知道最好的行动方案是什么。我已经考虑了一点,并想知道创建一个简单的智能指针类,它只包含一个真正的 boost 智能指针。但是随后客户可能会立即将其中一个塞入他们的 boost::sharedptr 风格中,然后我们将深入三个共享指针——这可能是一个问题,也可能不是。无论如何,我很想听听社区关于解决这个问题的最佳方法的一些意见。我已经考虑了一点,并想知道创建一个简单的智能指针类,它只包含一个真正的 boost 智能指针。但是随后客户可能会立即将其中一个塞入他们的 boost::sharedptr 风格中,然后我们将深入三个共享指针——这可能是一个问题,也可能不是。无论如何,我很想听听社区关于解决这个问题的最佳方法的一些意见。我已经考虑了一点,并想知道创建一个简单的智能指针类,它只包含一个真正的 boost 智能指针。但是随后客户可能会立即将其中一个塞入他们的 boost::sharedptr 风格中,然后我们将深入三个共享指针——这可能是一个问题,也可能不是。无论如何,我很想听听社区关于解决这个问题的最佳方法的一些意见。
编辑:我最初说的是所有权转移,但我应该指定API边界两边的代码都需要持有一个指向对象的指针。