C++ boost :: shared_ptr的深层拷贝

run*_*ank 2 c++ boost deep-copy

我正在尝试为C++ boost :: shared_ptr做深度复制.

struct A{
   boost::shared_ptr<const Data> dataPtr;

   A(const A& aSource) {
      dataPtr.reset(new const Data);
      *dataPtr  = *(aSource.dataPtr);
};
Run Code Online (Sandbox Code Playgroud)

但是,我得到了错误:错误:'const struct A''new'中未初始化的const

如果我不想丢弃const,如何处理?

任何帮助将不胜感激.

谢谢 !

And*_*owl 5

那是因为你试图修改(特别是分配)通过一个值const给它引用(因为这是解引用shared_ptrconst给你).假设Data有一个复制构造函数,你应该这样重写你的程序:

struct A
{
    boost::shared_ptr<const Data> dataPtr;

    A(A const& aSource)
    {
        dataPtr.reset(new Data(*(aSource.dataPtr)));
    }
};
Run Code Online (Sandbox Code Playgroud)