1 #ifndef __TABLEAU__ 2 #define __TABLEAU__ 3 4 #include <iostream> 5 using namespace std; 6 7 // Un objet-fonction general, a un parametre 8 class Functor1p { 9 public: 10 virtual float operator()(float) const = 0; 11 }; 12 13 class Tableau { 14 public: 15 16 // Le constructeur principal - on passe la dimension du tableau en parametre 17 explicit Tableau(size_t ); 18 19 // Le trio infernal 20 Tableau (const Tableau & ); 21 Tableau & operator=(const Tableau &); 22 ~Tableau(); 23 24 // renvoie la taille du Tableau 25 size_t size() const { return sz;}; 26 27 // renvoie un element du Tableau sans deborder 28 float & operator[](size_t i); 29 30 // meme chose - version const 31 float operator[](size_t i) const; 32 33 // operateurs += 34 // Le parametre est un autre Tableau 35 Tableau & operator+=(const Tableau & ); 36 37 // Le parametre est un float 38 Tableau & operator+=(float ); 39 40 // imprime le Tableau sur la sortie standard 41 void print () const; 42 43 // La fonction transform: on leur passe un objet-fonction à 1 paramètre 44 void transform(const Functor1p& ); 45 46 private: 47 const size_t sz; 48 float *A; 49 50 // Le signe __ rappelle qu'il s'agit de methodes privees 51 void __copie (float src, float dest[], size_t s); 52 void __copie (float src[], float dest[], size_t s); 53 }; 54 55 // Une fonction qui n'est pas une methode 56 Tableau operator+(const Tableau& t1, const Tableau& t2); 57 58 #endif