繁体   English   中英

C ++ boost :: shared_ptr的深层副本

[英]deep copy for C++ boost::shared_ptr

我正在尝试为C ++ boost :: shared_ptr做深层复制。

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

   A(const A& aSource) {
      dataPtr.reset(new const Data);
      *dataPtr  = *(aSource.dataPtr);
};

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

如果我不想删除const,该如何处理?

任何帮助将不胜感激。

谢谢 !

那是因为您试图通过const引用来修改(特别是赋值)一个值(因为这是将shared_ptr取消引用为const会给您的结果)。 假设Data具有一个复制构造函数,则应采用以下方式重写程序:

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

    A(A const& aSource)
    {
        dataPtr.reset(new Data(*(aSource.dataPtr)));
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM