J'ai créer une liste chainé qui permet ce type d'ecriture :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
  CListe<int *> plop;
  plop += new int(5);
  plop += new int(14);
  plop += new int(30);
  plop[1] = new int(89);
  std::cout << "il y en a " << plop.getNombre() << std::endl;
  plop.afficher(); //methode de test. qui affiche tout les elements a l'indirection des entiers.
Bon jusque la tout marche bien mais c'est biensur pas parce que ca marche que c'est bien.

Quand j'utilise l'operateur d'indexation je remplace la valeur du pointeur pour lui donner la nouvelle adresse seulement l'instance precedant n'est pas delete, et donc a chaque resaisie j'ai une instance en memoire que je ne controle plus et j'aimerais gerer cela.

voici le code de l'operateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
  T &operator[](unsigned int rang)
    {
      CCellule<T> *uneCellule = premier;
 
      for(int i = 0; i< rang;i++, uneCellule = uneCellule->getSuivant());
      return *uneCellule->getPtInformation();
    }
Je ne peut pas delete l'anciene instance puis resaisir par le return systematiquement (par la reference) car certaines fois l'operateur est utilisé en lecture seulement.

Toute idée est bienvenue.