1

クラスへのポインタを含む std::vector をコピーする必要があります。機能は次のとおりです。

Clone::Clone( const Clone &source )
{
    m_pDerivate.clear();

    std::vector<Derivate *>::const_iterator it;
    it = source.m_pDerivate.begin();
    for (it = source.m_pDerivate.begin(); it != source.m_pDerivate.end(); ++it) {
        m_pDerivate.push_back(new Derivate(it));
    }
}

Derivate コンストラクターは次のとおりです。

Derivate::Derivate( const Derivate &source )
{
    _y = source._y; 
    _m = _strdup(source._m);
}

しかし、コンパイルすると、次のエラーが発生します...

 cannot convert parameter 1 from 'std::_Vector_const_iterator<_Myvec>' to 'const Derivate &'

...行で:

m_pDerivate.push_back(new Derivate(it));

行を変更すると...

m_pDerivate.push_back(new Derivate((const Derivate &)(*it)));

...コンパイルは正常に行われますが、派生コンストラクターはデータを正しく受け取りません。

手伝って頂けますか?

前もって感謝します。

4

1 に答える 1

8

イテレータとポインタを逆参照する必要があります。

  • *itタイプですDerivate*
  • **itタイプですDerivate

変化する:

m_pDerivate.push_back(new Derivate(it));

に:

m_pDerivate.push_back(new Derivate(**it));
于 2012-05-17T11:11:43.080 に答える