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

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

本文关键字:复制 void 构造函数 另一个 一个      更新时间:2023-10-16

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

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 s。没有类型的信息可以使副本成为可能。

我也看不到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];
  }
}