1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/* on utilisera plutot l'opérateur () que l'opérateur [] */
double DoubleMatix::operator()(size_t line, size_t row) const{
/* une matrice de LINEMAX lignes et de ROWMAX colonnes peut être linéarisée en un tableau de LINEMAX * ROWMAX éléments
* et on peut donc accéder aux éléments choisis avec la formule element = line*ROWMAX + row.
*
* mais les indices vont de 0 à (LINEMAX*ROWMAX)-1 inclus. Tout indice hors de cette intervalle est du à une erreur de programmation
* et devra être corrigée avant la mise en production.
*
* Cela implique que, une fois l'application mise en production, le test de validité n'a plus de raison d'être.
*
* La macro assert (accessible depuis le fichier d'en-tête <cassert>) s'assure que le test ne sera
* effectué (et provoquera un plantage de l'application) qu'en mode "debug"
*/
assert(line < LINEMAX && "line out of bound");
assert(row < ROWMAX && "row out of bound");
/* appliqueons la formule */
return m_elements[line * ROWMAX + row] |
Partager