我需要在复制构造函数中复制值。但是我的复制构造函数不起作用

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。没有类型信息可以复制。

我也看不出为什么lprp具有所有的“智慧”。只需直接复制:
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];
  }
}

07-28 01:26
查看更多