簡體   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