Implémentation classe d'itérateur/conteneur, soucis
J'ai plusieurs problèmes pour implémenter ma classe d'itérateur et de conteneur, je vais commencer par celui-là :
Ma classe itérateur se sert d'un indice pour accéder à l'élément courant du conteneur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Iterateur
{
public:
// Construction d'un itérateur non initialisé
Iterateur();
// Construction à partir d'un conteneur et de l'indice d'un élément du conteneur
Iterateur( Conteneur * conteneur, size_t position );
~Iterateur();
private:
// Le conteneur
Conteneur * m_conteneur;
// Position courante dans le conteneur
size_t m_position; |
Et ma classe Conteneur permet de renvoyer des Iterateur const ou non const :
Code:
1 2 3 4 5 6 7 8
| class Conteneur
{
public:
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
}; |
Lorsque j'implémente ma méthode begin() non const, je passe this dans le constructeur d'Iterateur que je renvoie, mais pour la méthode const, il faudrait que je passe par un const_cast<>, or je me dis que le const_cast montre que j'ai mal pensé la chose.
Des avis ?