Hi! I'm programming a simple linked list and I don't know if my ClIterator is correct... I'm actually coding in french but I know that code is code in every language so I hope you will help me even if you don't speak french...
Here my ClIterateur class... If you have some problem, just post and I'll answer soon.
What my ClIterateur class is supposed to do : Keep a pointer on a TypeNoeud element (TypeNoeud is a special struct which have a data and a pointer on the next element) and a boolean if it's the first element of the list. But I don't think it is working correctly...Code:class ClIterateur
{
friend class ClListe<T>;
public :
ClIterateur()
: m_pNoeud(0), m_estPremierElementDeLaListe(false)
{}
ClIterateur(TypeNoeud* adresse, bool estPremier)
: m_pNoeud(adresse), m_estPremierElementDeLaListe(estPremier)
{}
T operator*() const
{
return m_pNoeud->donnee;
}
T& operator->() const
{
return &m_pNoeud->donnee;
}
ClIterateur& operator++()
{
if (m_estPremierElementDeLaListe)
{
m_estPremierElementDeLaListe= false;
}
else
{
m_pNoeud= m_pNoeud->pSuiv;
}
return *this;
}
ClIterateur operator++(int) // i++
{
ClIterateur ancienIterateur= *this;
if (m_estPremierElementDeLaListe)
{
m_estPremierElementDeLaListe= false;
}
else
{
m_pNoeud= m_pNoeud->pSuiv;
}
return ancienIterateur;
}
bool operator==(ClIterateur p_it) const
{
return (m_pNoeud == p_it.m_pNoeud && m_estPremierElementDeLaListe == p_it.m_estPremierElementDeLaListe);
}
bool operator!=(ClIterateur p_it) const
{
return m_pNoeud != p_it.m_pNoeud || m_estPremierElementDeLaListe != p_it.m_estPremierElementDeLaListe;
}
private :
TypeNoeud* m_pNoeud;
bool m_estPremierElementDeLaListe;
explicit ClIterateur(TypeNoeud* p_pNoeud)
: m_pNoeud(p_pNoeud), m_estPremierElementDeLaListe(false)
{}
};
