我需要复制一个包含指向类的指针的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构造函数没有正确接收数据.
你能帮助我吗?
提前致谢.
您需要取消引用迭代器和指针:
*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)