std::vector存储指针后深拷贝的问题

景语 2014-09-29 09:16:34
class  CPoolLine 
{
private:
double m_max_x;
double m_min_x;
double m_max_y;
double m_min_y;
unsigned int m_start;
unsigned int m_end;
int m_data_pool_id;
vector<Slicepoint> m_v_slice_data;
vector<CPoolLine *> m_v_subline;

public:
CPoolLine();
~CPoolLine();

CPoolLine(const CPoolLine &pl) :
m_max_x(pl.m_max_x), m_min_x(pl.m_min_x), m_max_y(pl.m_max_y), m_min_y(pl.m_min_y),
m_start(pl.m_start), m_end(pl.m_end), m_data_pool_id(pl.m_data_pool_id),
m_v_slice_data(pl.m_v_slice_data)
{
vector<CPoolLine *>::const_iterator itr = pl.m_v_subline.begin();
for (; itr != pl.m_v_subline.end(); itr++)
{
//...?
}

}
}


能想到的就是如上了,不知这个深拷贝到底该怎么写
...全文
467 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2014-09-29
  • 打赏
  • 举报
回复
确实逻辑好复杂 = = 。
Uron 2014-09-29
  • 打赏
  • 举报
回复
楼主的设计可能是想用到观察者模式吧。深拷贝就是重新生成一份内容,不只是拷贝地址。new
勤奋的小游侠 2014-09-29
  • 打赏
  • 举报
回复
设计确实有点复杂,你不如重新封装一个自己的vector,一劳永逸地解决这个问题。 不应该将问题放到这个层面。
勤奋的小游侠 2014-09-29
  • 打赏
  • 举报
回复
应该先把析构函数写了才拷贝和赋值构造怎么写。 假如你的析构没有delete操作,就不应该深度拷贝,只是浅复制就可以了。
mujiok2003 2014-09-29
  • 打赏
  • 举报
回复
好复杂的设计。
jiuchang 2014-09-29
  • 打赏
  • 举报
回复
你这个设计是不是有些问题,类里为什么会有两个保存自己类型的vector呢 是不是应该拆分为两个类,那样逻辑应该会简单不少吧
passion_wu128 2014-09-29
  • 打赏
  • 举报
回复
m_v_subline.push_back(new CPoolLine(**itr));

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧