我需要帮助。当尝试迭代一个集合时,我得到以下错误:
错误1错误C2440:'初始化':无法转换 '的std :: _ Tree_const_iterator< _Mytree>'至 'compound_objectNS :: Compound_object *'c:\ program files (x86)\ microsoft visual studio 10.0 \ vc \ include \ xmemory 208
我收到了以下代码: 从文件“compound_object.cpp”中提取:
typedef compound_objectNS::Compound_object OBJECT
bool OBJECT::operator== (const Compound_object &object) const
{
return this == &object;
}
bool OBJECT::operator< (const Compound_object &object) const
{
return this->m_numberOfObject < object.m_numberOfObject;
}
这里允许set对元素进行排序我覆盖了运算符“==”和“&lt;”
客户档案:
for (objectImitatorNS::set<compound_objectNS::Compound_object*>::iterator it = Objects->begin();
it != Objects->end(); ++it)
{
this->m_imitatedObjects->insert(it);
}
正如我所知,当行
时会出现错误这 - &GT; m_imitatedObjects-&GT;插入(它)
执行。
如何解决这个问题?
答案 0 :(得分:4)
说this->m_imitatedObjects->insert(*it);
。您正在插入值。
答案 1 :(得分:4)
std::set::insert
(带有一个参数的版本)不带迭代器。它需要一个价值。 See here。你可以尝试:
this->m_imitatedObjects->insert(*it);
答案 2 :(得分:0)
您必须插入值not iterator obj。