2017-01-01 3 views
1

Мне нужно скопировать значения в конструктор копирования. Но мой конструктор копирования не работаетСкопировать значения из одного void ** в другое void ** в конструкторе копии C++

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?

ответ

1

У вас отсутствует звездочка и косвенная ссылка.

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]; 
    } 
} 
+0

Замечательно! Вы решили мою проблему за считанные секунды! –

+0

@MarinRantic - Если это действительно решит вашу проблему, рассмотрите отметку флажка рядом с ответом. – StoryTeller

+1

Да, я знаю. Но появляется сообщение, что я могу принять ответ только через 6 минут –