我需要在复制构造函数中复制值。但我的复制构造函数不起作用
typedef void* Vptr;
class Vector
{
int sz;
Vptr* elemsArray;
public:
Vector(const Vector& src) : sz{src.sz}, elemsArray{new Vptr[src.sz]}
{
Vptr lp,rp;
for (int i = 0; i < this->sz; i++) {
lp = this->elemsArray[i];
rp = src.elemsArray[i];
*lp=*rp; // compiler doesn't like this line!!!
}
}
};
如何在不使用std::copy
的情况下复制值?
答案 0 :(得分:1)
您缺少星号和间接。
Vector(const Vector& src) : sz{src.sz}, elemsArray{new Vptr[src.sz]}
{
Vptr *lp, *rp;
for (int i = 0; i < this->sz; i++) {
lp = &(this->elemsArray[i]);
rp = &(src.elemsArray[i]);
*lp=*rp;
}
}
当然编译器抱怨说,你试图复制void
。没有类型信息可以使副本成为可能。
我也无法理解为什么lp
和rp
的所有“聪明”。只需直接复制:
Vector(const Vector& src) : sz{src.sz}, elemsArray{new Vptr[src.sz]}
{
for (int i = 0; i < this->sz; i++) {
this->elemsArray[i] = src.elemsArray[i];
}
}