【发布时间】:2013-02-13 16:03:35
【问题描述】:
我正在尝试为 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,如何处理?
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
这样,dataPtr 会因为 const_cast 而指向一个非 const Data 吗?谢谢!
-
shared_ptr的全部意义在于避免深拷贝。如果你想要深拷贝,你需要一个不同的指针类型。 (你还需要一个关于如何进行深度复制的约定。Base*实际上可能指向Derived,而必须复制的是Derived。)