#include #define TAB_MAX 3 // Une classe Erreur qui va nous servir a lever une // exception si l'indice utilise est en dehors des limites class Erreur { public: Erreur( int i ) : indice(i) { printf( "Dans la classe Erreur : Constructeur (i=%d)\n", i ); } int GetIndice() { return indice; } private: int indice; }; // Une classe tableau qui montre comment on peut surcharger les crochets // [] class Tableau { public: Tableau() {} ~Tableau() {} // Surcharge de []. cela marche en lecture (a = t[i]) // et en ecriture (t[i] = 1234) int & operator [] ( int i ) { printf( "Dans la classe Tableau : Appel de [] avec i=%d\n", i ); if( i >= sizeof(tab)/sizeof(int) || i < 0 ) throw Erreur (i); return tab[i]; } // Affectation (ecriture) sans utilisation de la surcharge int Set( int i, int val ) { printf( "Dans la classe Tableau : Appel de Set() avec i=%d\n", i ); if( i >= sizeof(tab)/sizeof(int) || i < 0 ) return -1; tab[i] = val; return 0; } // Lecture sans utilisation de la surcharge int Get( int i ) { printf( "Dans la classe Tableau : Appel de Get() avec i=%d\n", i ); if( i >= sizeof(tab)/sizeof(int) || i < 0 ) return -1; return tab[i]; return 0; } private: // Un tableau d'entiers int tab[TAB_MAX]; }; // Point d'entree int main() { Tableau t; int i; // Utilisation de Set et Get printf( "Utilisation des methodes Set() et Get()\n" ); for( i = 0; i < TAB_MAX + 1; i ++ ) { printf( "Dans main() : t.Set(%d, (%d+1) * 10 )\n", i, i ); t.Set(i, (i+1) * 10 ); } for( i = 0; i < TAB_MAX + 1; i ++ ) { printf( "Dans main() : t.Get(%d) = %d\n", i, t.Get(i) ); } // Utilisation de [] surcharges printf( "Utilisation de [] surcharges\n" ); for( i = 0; i < TAB_MAX + 1; i ++ ) { try { t[i] = (i+1) * 10; printf( "Dans main() : t[%d] = (%d+1) * 10\n", i, i ); } catch( Erreur e ) { printf( "Dans main() : Indice %d en dehors des limites lors de l'affectation\n", e.GetIndice() ); } } for( i = 0; i < TAB_MAX + 1; i ++ ) { try { printf( "Dans main() : t[%d] = %d\n", i, t[i] ); } catch( Erreur e ) { printf( "Dans main() : Indice %d en dehors des limites lors de la lecture\n", e.GetIndice() ); } } return 0; }