/* IFT1169 - démonstration #09 - exercice 02 - 01-avril -2006 v1.01 M.Lokbani - l'énoncé+solution à partir de l'énoncé de l'examen Final session Hiver 2004 - IFT1166 - 24-avril -2004 v1.00 M.Lokbani - code & comments Final H04 contact: lokbani@iro.umontreal.ca Copyright (C) 1999-2006 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- Description: ------------ Description: Cet exercice a été proposé à l'examen Final session Hiver 2004. Il montre comment convertir une classe donnée vers une classe générique. */ #include using namespace std; #ifndef DEMO9_H #define DEMO9_H template class GenIntList { public: // Construit une liste ayant n éléments. // val est la valeur par défaut pour chacun des éléments. GenIntList(int n = 10, const T &val = T()); ~GenIntList(); // Retourne le ie élément de la liste (version const) T operator[](int i) const; // Retourne le ie élément de la liste (version non const) T& operator[](int i); // Retourne le nombre d'éléments dans la liste int GetSize() const; private: int taille; // Taille de la liste T *ptr; // Un pointeur vers les éléments de la liste }; // Constructeur template GenIntList:: GenIntList (int n, const T &val) { assert(n>0); NumberOfValues = n; ptr = new T [n]; for (int i = 0; i < n; ++i) ptr[i] = val; } } /* Q3) Écrire l'instruction permettant d'instancier un objet maListe de classe GenIntList ayant 8 éléments chacun initialisé avec la valeur 3. GenIntList maliste(8,3); Q) Nous allons ajouter à la classe GenIntList l'opérateur de sortie operator<<. Ayant déjà pris connaissance de toutes les informations précédement fournies, est-ce que vous êtes dans l'obligation de déclarer cet opérateur ami de la classe GenIntList? Expliquer votre réponse. Non, nous ne sommes pas dans l’obligatoin de déclarer cet opérateur ami. En effet, nous pouvons accéder aux membres privés de la classe à travers l’opérateur public oprator[] et la méthode GetSize. */ #endif