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 :
Pouvez-vous me dire si y'a des choses qui sont fausses ? Que l'on pourrait "mieux" écrire ?Code:
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; };
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 ?Code:v=source.v;
Merci d'avance.