Une classe peut être définie localement à une autre classe :
template <class Type> class Liste{ private: class Item{ public: Type val; Item* suivant; Item(Type t,Item *item=0){val=t; suivant=item;} }; Item *courant; Item *fin_liste; Item *debut_liste; public: Liste(){ courant=0;pos=0;fin_liste=0;taille=0; debut_liste=0;}; //ajoute un element void ajouter_elem(Type t); void inserer_elem(Type t); int aller_en(int i); Type valeur(){return(courant->val);} Type & operator[] (int i); };La classe Item est dans la protée de la classe Liste