我需要在复制构造函数中复制值。但是我的复制构造函数不起作用
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];
}
}
关于c++ - 在 C++ 复制构造函数中将值从一个 void** 复制到另一个 void**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414097/