在 C++ 复制构造函数中将值从一个 void** 复制到另一个 void**

Copy values from one void** to another void** in C++ copy constructor

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

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; 
  }
}

编译器当然会抱怨,您正在尝试复制 voids。没有使复制成为可能的类型信息。

我也不明白为什么 "cleverness" 和 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];
  }
}