我需要在复制构造函数中复制值。但是我的复制构造函数不起作用
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
复制值? 最佳答案
您缺少一个星号和一个间接。
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];
}
}