我尝试为我的指向对象的指针向量编写一个复制构造函数,该对象在类 Shop 中初始化和声明。考虑的向量是:
std::vector <gCustomer*> vCustomer;
它也在 gShop 的构造函数中声明并通过析构函数中的循环删除。
现在我想在复制构造函数中有一个指针向量的深层副本。但是实际上没有复制任何内容,如果我设法运行程序并访问 vCustomer,对其大小的检查仍然为零或使程序崩溃。(请注意,如果我将复制构造函数排除在外,以便使用默认的复制构造函数,则程序运行正常)
gShop::gShop(const gShop & cShop)
{
for(int i = 0; i < (int)vCustomer.size(); ++i)
{
vCustomer[i] = cShop.vCustomer[i];
}
}
谢谢
注意我也有一个分配的操作员
gShop gShop::operator=(const gShop & rhs)
{
if (this == &rhs) return *this;
for(int i = 0; i < (int)vCustomer.size(); ++i)
{
delete vcustomer[i];
vCustomer[i] = new gCustomer;
vCustomer[i]= rhs.vCustomer[i];
}
}