Problem with wring my own iterator
Hi everyone
I tried to copied the code of some program that uses their own
iterator to loop over some elements of map... The code seems simple
and works in the program I copied it from of course (and I can compile
it) but I can get my own version to work. I get this error message:
xx.cc: In member function =91A::Iterator A::begin()':
xx.cc:716: error: conversion from
=91std::_Rb_tree_iterator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >' to non-scalar
type =91A::Iterator' requested
xx.cc: In member function =91int& A::Iterator::value() const':
xx.cc:737: error: invalid initialization of reference of type =91int&'
from expression of type =91const int'
Could anyone please help me ? Thank you so much -c
class A
{
public:
A() {}
typedef std::map<std::string, int> MapStuff;
class Iterator;
Iterator begin();
Iterator end();
Iterator find( const char *name );
private:
MapStuff map;
};
class A::Iterator
{
public:
Iterator();
Iterator & operator ++ ();
const std::string & name () const;
int & value() const;
private:
//friend class A::ConstIterator;
A::MapStuff::iterator _i;
};
A::Iterator
A::begin()
{
return map.begin();
}
A::Iterator::Iterator () : _i()
{
// empty
}
A::Iterator & A::Iterator::operator ++ ()
{
++_i;
return *this;
}
const std::string & A::Iterator::name () const
{
return _i->first;
}
int & A::Iterator::value() const
{
return _i->second;
}