C++ 使用复制构造函数复制动态分配的对象数组

C++ 使用复制构造函数复制动态分配的对象数组,c++,memory,copy,C++,Memory,Copy,假设我有一个类,基本上是一个普通的数组包装器: template<class T> SimpleArray { T * array; SimpleArray(): T(NULL) {} SimpleArray(T * array_) { // what goes here? } // TODO: copy constructor and copy assignment ~SimpleArray() { delete[] ar

假设我有一个类,基本上是一个普通的数组包装器:

 template<class T>
 SimpleArray {
   T * array;
   SimpleArray(): T(NULL) {}
   SimpleArray(T * array_) {
     // what goes here?
   }
   // TODO: copy constructor and copy assignment
   ~SimpleArray() {
     delete[] array;
   }
 };
模板
辛普莱雷{
T*阵列;
SimpleArray():T(NULL){}
SimpleArray(T*数组){
//这里有什么?
}
//TODO:复制构造函数和复制赋值
~SimpleArray(){
删除[]数组;
}
};
如何将元素从一个数组复制到另一个数组?如果它是一个简单的类型,我就可以使用像
memcpy
这样的东西,它会工作得很好。但是如果
T
是一种需要深度复制的复杂类型,该怎么办?例如,如果
T
有一个成员数组,那么浅层复制它将创建多个指向同一资源的
T
对象,这是一场灾难

基本上,我需要一些方法来创建数组的深度副本。有什么建议吗


我知道我可以使用标准库中的一些东西,但我不这么做是有原因的
SimpleArray
旨在以
T*
的形式轻松访问我的对象的内部存储。就我而言,没有任何STL容器支持这种功能。

滚动您自己的动态数组是不可取的。如果您只需要通过T*访问底层数据,那么您可以使用(仅限c++11)或&vec.front()。

好吧,首先您需要知道数组的大小,然后才能执行任何操作。@nikhil-Oh的副本看起来确实是这样的。谢谢我想,我的搜索没有那么好。std::vector以
t*
的形式提供访问权限。看见