gpt4 book ai didi

c++ - 在 header 中隐藏依赖项

转载 作者:行者123 更新时间:2023-11-28 07:13:23 24 4
gpt4 key购买 nike

我这样实现了“私有(private)实现类”:

#include <boost/shared_ptr.hpp>

class MyClassImpl;

class MyClass
{
public:
MyClass();
~MyClass();
int someFunc();

private:
boost::shared_ptr<MyClassImpl> * pimpl;
}

但在本例中,我使用了一个 boost 智能指针。我想隐藏 boost 依赖项(以避免用户必须使用 boost 来编译)什么是最好的解决方案?

非常感谢。

最佳答案

您不能隐藏对智能指针的依赖,因为它是“公共(public)”类的一部分。

在 C++11 中,使用 std::unique_ptr,如果您想要共享语义,则可能使用 std::shared_ptr

如果您还停留在过去,需要共享,那么您几乎只能使用或重新发明 boost::shared_ptr。如果您不需要共享,请使用 std::auto_ptr,或带有析构函数的原始指针来删除对象。在这两种情况下,您都应该将复制构造函数和复制赋值运算符声明为私有(private),以防止意外复制指针。或者,您可以编写自己的非常简单的不可复制智能指针,类似于 boost::scoped_ptr

关于c++ - 在 header 中隐藏依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com