使用一些指针和许多数据成员为类设计复制构造函数的任何好方法

时间:2013-08-30 19:47:32

标签: c++ copy-constructor

我面临一个必须使用几个指针的类(由于依赖于旧库,这里使用智能指针并不容易)并且该类还包含大量非指针数据成员随着项目的进展而成长。

由于指针,我想编写自己的复制构造函数。由于乏味和维护困难,我不想写出包含所有非指针数据成员的初始化列表,并在每次添加新成员时更新它。

如果我能以某种方式依赖于默认的复制构造函数然后只为少数指针修改它,那将是很棒的,但我不确定这是可能的吗?有没有办法做这个或其他技术来处理这种情况?

有些想法可能会回答我自己的问题。

数据成员可以按单独的类放置。然后原始类可以只包含数据类的一个对象并执行它的默认副本。

还有什么更好的吗?

2 个答案:

答案 0 :(得分:2)

如果你的班级没有原始指针,只需浅浅地复制它们并称之为好。

如果您的类 拥有指针,请继续使用适当的智能指针并将原始指针传递到外部库的API中。

最后,如果您和图书馆共享所有权,请放弃图书馆并找到一个具有理智界面的图书馆。或者,如果你绝对必须,将类的指针成员放入一个special_library_pointer_holder类,该类知道如何正确地复制/分配/等每个指针,而不是相对于外部库,然后只包含{{1你原来的班级。

答案 1 :(得分:0)

我认为这里最好的方法是让聪明的指针完成工作,然后关注The Rule Of Zero