2017-01-01 8 views
1

コピーコンストラクタで値をコピーする必要があります。しかし、私のコピーコンストラクタはstd::copyを使用せずに値をコピーするにはどうすればよいC++コピーコンストラクタのvoid **から別のvoid **への値のコピー

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

動作しませんか?

答えて

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をコピーしようとしていました。コピーを可能にするためのタイプ情報はありません。

なぜ私はすべての "賢さ"が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]; 
    } 
} 
+0

ワンダフル!あなたは数秒で私の問題を解決しました! –

+0

@ MarinRantic - 本当にあなたの問題を解決したら、答えの横にチェックボックスを付けることを検討してください。 – StoryTeller

+1

はいわかっています。しかし、メッセージは私が6分後にしか答えを受け入れることができるように見える –

関連する問題