js1000
Messages postés1Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention30 juin 2005
-
30 juin 2005 à 15:53
cs_0xYg3n3
Messages postés115Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention 8 octobre 2007
-
3 juil. 2005 à 20:23
Bonjour a tous !
Je suis novice en C++ et je suis en train d'apprende les bases. J'ai donc une question a vous posez :
Je veux ecrire une classe Matrice pour me faire la main permettant de faire du calcul sur un objet Matrice.
class Matrice {
public :
..... des variables et mon tableau a deux dimension
Matrice(int,int);
~Matrice();
};
Lorque ma classe est ecrite je crée mon objet de la facon suivante :
Matrice M(3,3); // Matrice 3x3
Mes questions sont les suivantes :
- Est il possible lorsque je declare une matrice M1 par exemple que "M1" soit automatiquement mis dans une chaine de caractere de la classe (cad de mettre le nom de la variable dans une chaine de car.)
- Comment faire pour utiliser ma matrice de la facon suivante :
int i = M(1,0); // Mettre dans i la valeur contenu dans M a la ligne 1 colonne 0
cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 janvier 2007 1 juil. 2005 à 08:41
Pour ce qui est de ta seconde question, tu peux redefinir l'opérateur () de la façon suivante:
int Matrice::operator () (int i, int j)
{
return _data[i][j];
}
avec l'hypothese que tu ai créé ta classe comme ceci:
class Matrice
{
// Membres publics:
int _row;
int _column;
int** _data;
// Constructeur et destructeur
public:
Matrice(int i, int j);
virtual ~Matrice();
public:
int operator () (int i, int j);
...
}
et le constructeur comme ceci:
Matrice::Matrice(int i, int j) :
_row (i),
_column (j)
{
_data = new int*[_row];
for int i = 0; i < _row; i++)
_data[i] = new int[row];
}
evidemment ne pas oublier de faire delete[] dans le destructeur...
Cependant tu peux voir que de cette facon, ta matrice est forcement une matrice de int. Hors une matrice pourrait etre remplie egalement de float, double, unsigned int... que les methodes seraient inchangées... Dans ce cas, on peut utiliser les templates.