Bonjour,

Je m'entraine un peu au c++, et je dois définir une classe tableau qui vérifie les conditions suivantes :

  • On modélise un tableau de type T donné ( par exemple int )

  • Les objets de type T sont copiables par création et affectation

  • Les operateur operator [] (int i ) et operator [] (int i ) const retournent l'élément i du tableau. ( version const ou non )

De plus la classe tableau doit contenir les champs suivant :
  • int n; // nombre de valeurs utilisées dans le vecteur

  • int nx; // nombre de valeurs allouées dans le vecteur ( n <=nx)

  • T*v; // un pointeur sur le tableau de valeurs allouées


Avec un constructeur par défaut qui construit un tableau vide.

Premièrement, je n'ai pas trop compris l'histoire des nx et n : mon tableau sera de taille nx et j'utiliserai n valeurs, c'est ça ? Je vois pas trop ce qu'ils veulent qu'on fasse ?

Sinon pour le reste, j'ai fait ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
typedef int T; // T de type int
class tableau
{
public:
          tableau() {};   // tableau vide 
          tableau (int n1) { v= new T[n=n1];}       
          tableau( const tableau & source ){ // constructeur par copie
          n=source.n;
          nx=source.nx;
          // v=source.v;
          for(int i =0;i<n;i++) v[i]=source.v[i];                 
                   }
          int& operator[] (int i) { return v[i];} // & pour avoir création et affectation
          int& operator[] (int i) const { return v[i];}
private:
           int n,nx;
           T*v;   
};
Pouvez-vous me dire si y'a des choses qui sont fausses ? Que l'on pourrait "mieux" écrire ?
Je sais pas du tout si le tableau vide est correct.
Je me demande aussi si je pouvais pas écrire :
à la place de la boucle sur i ?

Merci d'avance.