Matrice carree c++

jacinthe87 Messages postés 204 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour,
SVP comment initialer une matrice carree dans un constructeur
template <class T>
       Matrix<T>::Matrix(int d):dim(d){
                             matri=new T[dim][dim];  //erreur
                             }

??

4 réponses

FlorianWebmastering Messages postés 281 Statut Membre 20
 
Ah la programmation objet je vous envoi un lien vers mon site.
Avez vous reçu mon Message privé?
0
jacinthe87 Messages postés 204 Statut Membre 3
 
Merci pour le lien, j'a corrigé l'erreur:
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
0
FlorianWebmastering Messages postés 281 Statut Membre 20
 
#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.

0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
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.
0