[英]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.