基本的には通常の配列ラッパーである次のクラスがあるとします。
template<class T>
SimpleArray {
T * array;
SimpleArray(): T(NULL) {}
SimpleArray(T * array_) {
// what goes here?
}
// TODO: copy constructor and copy assignment
~SimpleArray() {
delete[] array;
}
};
ある配列から別の配列に要素をコピーするにはどうすればよいですか? 単純なタイプであれば、 のようなものを使用するmemcpy
だけで問題なく動作します。しかし、T
ディープ コピーが必要な複合型の場合はどうなるでしょうか。たとえば、T
メンバー配列がある場合、浅いコピーよりもT
、同じリソースを指す複数のオブジェクトが作成され、これは惨事です。
基本的に、配列のディープ コピーを作成する方法が必要です。助言がありますか?
標準ライブラリの何かを使用できることはわかっていますが、使用しないのには理由があります。SimpleArray
の形式でオブジェクトの内部ストレージに簡単にアクセスできるように設計されていますT*
。私に関する限り、そのような機能をサポートする STL コンテナはありません。