4 réponses
Merci pour le lien, j'a corrigé l'erreur:
mais comment je dois le remplir?
comme ça :
template <class T>
Matrix<T>::Matrix(int l,int c):li(l),cc(c){
matri=new T[li*cc];
}
mais comment je dois le remplir?
comme ça :
Matrice<int> m(3,3); m[0][0]=8; //erreur
#include <stdio>
#include "matrice.h"
using namespace std;
int main(){
matrice A(3,3);
cin>>A;
cout<<A<<endl;
...
return 0;
}
demande à l'utilisateur d'entrer les valeurs pour la matrice carrée 3,3 et l'affiche.
Tu peux surchargé l'opérateur []
T* Matrix::operator[](int i){return &matri[i*li];}
ou
T* Matrix::operator[](int i){return &matri[i*cc];}
selon la convention choisi pour représenté la matrice. L'inconvénient de cette méthode c'est que si la deuxième accolade dépasse la dimension, il n'y aura pas d'erreur mais un décalage de ligne ou de colonne.
Si tu veux, tu peux aller voir sur mon site, il y a une classe matrice tout en template aussi, avec toutes les méthodes qui vont bien.
T* Matrix::operator[](int i){return &matri[i*li];}
ou
T* Matrix::operator[](int i){return &matri[i*cc];}
selon la convention choisi pour représenté la matrice. L'inconvénient de cette méthode c'est que si la deuxième accolade dépasse la dimension, il n'y aura pas d'erreur mais un décalage de ligne ou de colonne.
Si tu veux, tu peux aller voir sur mon site, il y a une classe matrice tout en template aussi, avec toutes les méthodes qui vont bien.