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,如何处理?
任何帮助将不胜感激.
谢谢 !
那是因为你试图修改(特别是分配)通过一个值const给它引用(因为这是解引用shared_ptr来const给你).假设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)