2011-04-08 2 views
1

Je veux écrire un conteneur appelé my_list:Quelle est la relation entre une classe SUP et une classe SUB qui est définie dans SUP en C++?

template<typename T> 
class my_list { 
    public: 
     // ... 

     class iterator { 
      private: 
       node* it; 
     } 
    private: 
     struct node { 
      T item; 
      node* next; 
     } 

     node* head; 
     node* end; 
     int count; 
} 

Cependant, la classe iterator ne peut pas utiliser les membres de données privées dans la my_list classe. J'ai cherché des livres en C++, mais je n'y ai rien trouvé.

+0

Sauf s'il s'agit de devoirs ou d'apprentissage, préférez 'std :: list'. Il est déjà écrit, débogué et optimisé ainsi que très documenté. –

Répondre

1

Allez-y et lisez sur l'utilisation des classes d'amis dans ce tutorial. Les itérateurs sont tout à fait un exemple canonique d'utilisation correcte de cette fonctionnalité de langage.

Y at-il, d'ailleurs, une raison pour laquelle vous n'utilisez pas les structures de données STL au lieu de rouler les vôtres? Voir list.

+0

Vous avez juste besoin de connaître la structure du nœud, mais vous n'avez pas besoin d'être l'ami d'une liste. En fait, les itérateurs doivent être écrits de manière à ne pas avoir besoin de l'utilisation d'une relation d'ami (dans la plupart des conteneurs standards, c'est possible) – geekazoid

Questions connexes