3

約50人のクラスがあります。それらの1つはポインタです。したがって、当然、独自のコピーコンストラクタを作成し、すべてをコピーして、そのオブジェクトの新しいインスタンスを作成する必要があります。私の質問は次のとおりです。(デフォルトのコピーコンストラクターのように)すべてをコピーして、その1つのポインターを処理するためのショートカットまたは特別な方法はありますか?各メンバーを手動でコピーするのではなく。

4

3 に答える 3

6

私はあなたのポインタをあなたが好きな方法でコピーを行うヘルパークラスにラップします。そうすれば、デフォルトのコピーコンストラクターを使用してビッグクラスを離れることができます。

于 2012-06-19T11:50:58.540 に答える
0

代わりにスマートポインタを使用してから、クラスのデフォルトのコピーコンストラクタに依存してください。

標準のスマートポインタ(unique_ptrshared_ptr)には、オブジェクトをコピーするコピーコンストラクタはありませんが、独自のポインタをロールアップできます。

于 2012-06-19T11:52:24.773 に答える
0

デフォルトのコピーは機能しないとあなたが言っているので、私はあなたのオブジェクトがポインティを所有していると仮定します。

適切にクリーンアップする浅い​​コピーだけが必要な場合は、shared_ptrC++11から使用するかブーストします。

ディープコピーが必要な場合は、最初に、含まれているオブジェクトをポインタではなく値で格納することをお勧めします。その後、無料でコピーを入手でき、メモリ管理の追加セットについて心配する必要はありません。

最後に、これらのいずれもオプションでない場合は、ディープコピーセマンティクスを処理するポインターラッパーを作成します(boostがそのようなクラスを提供するとは思わない)。

于 2012-06-19T13:31:41.020 に答える