不能迭代集合

时间:2012-08-13 05:54:36

标签: c++ stl iterator set

我需要帮助。当尝试迭代一个集合时,我得到以下错误:

  

错误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;插入(它)

执行。

如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

this->m_imitatedObjects->insert(*it);。您正在插入

答案 1 :(得分:4)

std::set::insert(带有一个参数的版本)不带迭代​​器。它需要一个价值。 See here。你可以尝试:

this->m_imitatedObjects->insert(*it);

答案 2 :(得分:0)

您必须插入值not iterator obj。