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

标签 c++ boost header static-libraries private

我这样实现了“私有(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/

相关文章:

c++ - 1000LL 中的 LL 是什么意思?

c++ - 在 Boost.MPI 中使类可序列化是什么意思?

c++ - BOOST_LOG_TRIVIAL 和 boost::posix_time::ptime 输出格式

c - 赋值使指针来自整数警告

Apache - 权限策略标题错误 : Parse of permission policy failed because of errors reported by strctured header parser

CSS 标题样式

c++ - 不推荐使用的 header <codecvt> 替换

c++ - 如何重构这段简单的代码以避免代码重复?

c++ - 向 Qt 设计的对象添加继承

c++ - 使用 Boost Python 将 C++ 数组包装成 numpy 数组