我正在尝试为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,如何处理?
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:5)
这是因为您尝试通过const
引用来修改(特别是分配)某个值(因为这是取消引用shared_ptr
到const
的权限)。假设Data
有一个复制构造函数,你应该用这种方式重写你的程序:
struct A
{
boost::shared_ptr<const Data> dataPtr;
A(A const& aSource)
{
dataPtr.reset(new Data(*(aSource.dataPtr)));
}
};