迭代std ::指针向量时出错

Joa*_*les 1 c++ visual-c++

我需要复制一个包含指向类的指针的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));
    }
}
Run Code Online (Sandbox Code Playgroud)

Derivate构造函数是:

Derivate::Derivate( const Derivate &source )
{
    _y = source._y; 
    _m = _strdup(source._m);
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译时,我得到以下错误......

 cannot convert parameter 1 from 'std::_Vector_const_iterator<_Myvec>' to 'const Derivate &'
Run Code Online (Sandbox Code Playgroud)

......在线:

m_pDerivate.push_back(new Derivate(it));
Run Code Online (Sandbox Code Playgroud)

如果我换行...

m_pDerivate.push_back(new Derivate((const Derivate &)(*it)));
Run Code Online (Sandbox Code Playgroud)

...编译正常,但Derivate构造函数没有正确接收数据.

你能帮助我吗?

提前致谢.

hmj*_*mjd 8

您需要取消引用迭代器和指针:

  • *it 是类型的 Derivate*
  • **it 是类型的 Derivate

更改:

m_pDerivate.push_back(new Derivate(it));
Run Code Online (Sandbox Code Playgroud)

至:

m_pDerivate.push_back(new Derivate(**it));
Run Code Online (Sandbox Code Playgroud)