CDCatalogue::CDCatalogue() //creates array of size 4
{
maxsize=4;
numcds = 0;
cds = new CD[maxsize];
}
我希望将cat
复制到一个大小为cat
的新数组中:
CDCatalogue::CDCatalogue(const CDCatalogue& cat)
{
}
答案 0 :(得分:0)
如前所述,我更喜欢使用std :: vector,它提供了resize()成员函数,以满足您的需求。这可能就是你要找的东西。
如果由于某种原因你不能使用向量,可能比使用"倍增复制构造函数更简单的方法"将有一个功能' doubleSize'你可以在构造复制后立即调用。
假设在你的问题中的例子中,maxsize和cds被声明为类成员,你可以这样做:
CDCatalogue::doubleSize() {
unsigned int oldMaxSize = maxsize;
maxsize *= 2; // You might want to keep an eye for overflows here
CD *oldCds = cds;
cds = (CD*) new CD[maxsize];
std::copy(oldCds, oldCds+oldMaxSize, cds);
delete[] cds;
}
请注意,这并不像使用向量那么简单,因为没有" resize"用于c ++动态分配。相反,您必须创建一个新的所需大小的数组,将旧数组的元素复制到新数组中,然后释放旧数组的内存。请注意,新数组的后半部分元素将初始化为未定义的值。