在 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;
}
}
编译器当然会抱怨,您正在尝试复制 void
s。没有使复制成为可能的类型信息。
我也不明白为什么 "cleverness" 和 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];
}
}
我需要在复制构造函数中复制值。但是我的复制构造函数不起作用
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。没有使复制成为可能的类型信息。
我也不明白为什么 "cleverness" 和 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];
}
}