0

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

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

如果我能以某种方式依赖默认的复制构造函数,然后只为几个指针修改它,那就太好了,但我不确定这是否可能?有没有办法做到这一点或其他一些技术来处理这种情况?

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

数据成员可以放在一个单独的类中。然后原始类可以只包含数据类的一个对象并对其进行默认副本。

有更好的吗?

4

2 回答 2

2

如果您的类不拥有原始指针,只需浅拷贝它们并称其为好。

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

最后,如果您和图书馆共享所有权,请放弃图书馆并找到一个界面健全的图书馆。或者,如果您绝对必须,将类的指针成员放入一个special_library_pointer_holder类中,该类知道如何正确复制/分配/等每个指针,而不是它相对于您的外部库所持有的指针,然后仅包含special_library_pointer_holder原始类中的指针。

于 2013-08-30T21:01:13.840 回答
0

我认为这里最好的方法是让智能指针完成工作并遵循零规则

于 2013-08-30T21:01:25.390 回答