2012-08-13 97 views
1

我需要帮助。当试图在一组,我得到以下错误迭代:无法迭代设置

Error 1 error C2440: 'initializing' : cannot convert from 'std::_Tree_const_iterator<_Mytree>' to '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; 
    } 

这里,让集来排序元素我重载运算符 “==” 和 “<”

客户端文件:

for (objectImitatorNS::set<compound_objectNS::Compound_object*>::iterator it = Objects->begin(); 
     it != Objects->end(); ++it) 
    { 
     this->m_imitatedObjects->insert(it); 
    } 

正如我想出的错误是当行

this->m_imitatedObjects->insert(it)

执行。

如何解决这个问题?

回答

4

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

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

'insert'确实可以“取一个迭代器”,只是不在OP所寻找的过载中......(例如'insert(it,0)'将会“工作”)。 – 2012-08-13 06:04:24

+0

当然可以。我编辑过,说带有一个参数的版本不需要迭代器。 – Cornstalks 2012-08-13 06:05:31

+0

谢谢!工作正常 – 2012-08-13 06:12:37

4

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

+0

感谢您的回答! – 2012-08-13 06:13:22

0

您必须插入值而不是迭代器obj。