IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Difficultés avec template de classe


Sujet :

Langage C++

  1. #1
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut Difficultés avec template de classe
    bonjour je voudrais faire un template de classe (pour apprendre) Matrice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef MATRICE_HH
    #define MATRICE_HH
     
    #include "Exception.hh"
     
    template<typename Tn=float>
    class Matrice {
    	private:
    		int MATnombreLignes;
    		int MATnombreColonnes;
    		Tn **MATtableau;		
    	public:
    		Matrice(Tn valeurDefaut, int lignes, int colonnes) throw(Exception);
    		~Matrice();
    };
     
    #include "Matrice.cc"
     
    #endif
    Matrice.cc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    template<typename Tn>
    Matrice<Tn>::Matrice(Tn valeurDefaut, int lignes, int colonnes) throw(Exception) :
    MATnombreLignes(lignes), MATnombreColonnes(colonnes), MATtableau(NULL)
    {
    	try {
    		MATtableau=new Tn[lignes];
    		for(int iBoucleLigne=0;iBoucleLigne<lignes;iBoucleLigne++) {
    			MATtableau[iBoucleLigne]=new Tn[colonnes];
    			for(int iBoucleColonne=0;iBoucleColonne<colonnes;iBoucleColonne++)
    				MATtableau[iBoucleLigne][iBoucleColonne]=valeurDefaut;
    		}
    	}
    	catch(std::bad_alloc& ba) {
    		throw Exception("Memory error.");
    	}
    }
     
    template<typename Tn>
    Matrice<Tn>::~Matrice() {
    	if (MATtableau)
    		for(int iBoucleLigne=0;iBoucleLigne<MATnombreLignes;iBoucleLigne++)
    			if (MATtableau[iBoucleLigne])
    				delete MATtableau[iBoucleLigne];
    }
    Erreur :

    Matrice.cc: In constructor ‘Matrice<Tn>::Matrice(Tn, int, int) [with Tn = int]’:
    main.cc:8: instantiated from here
    Matrice.cc:6: erreur: cannot convert ‘int*’ to ‘int**’ in assignment
    make: *** [main.oo] Erreur 1
    Pouvez vous m'éclaircir ?

    Au passage je demande que utiliser comme conteneur ? un tableau comme je veux faire, des vector, list ?

  2. #2
    Membre averti Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Points : 323
    Points
    323
    Par défaut
    bonsoir,
    Ton erreur de compilation vient du fait que tu veux mètre un tableau a une dimension dans un tableau a deux dimension:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Tn **MATtableau; //Tableau a 2 dimetions
     
     
    MATtableau=new Tn[lignes]; //Tn[ligne] est un tableau a une dimention
    Au passage je demande que utiliser comme conteneur ? un tableau comme je veux faire, des vector, list ?
    Les vectors ça sera déjà beaucoup mieux. Mais pour les tableaux multi-dimentionel il parait que les Multi-array de boost sont encore mieux. (je n'ai pas encore eu l'occasion de tester, et surtout ils ne compile sous borland 6)

  3. #3
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    on va dire que c'est l'heure qui m'a fait oublier le *.

    Merci, je vais regarder les vectors.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Difficulté avec module de classe
    Par MarcelG dans le forum Général VBA
    Réponses: 2
    Dernier message: 14/03/2013, 09h45
  2. [POO] Difficulté avec des classes et require
    Par kitiss dans le forum Langage
    Réponses: 6
    Dernier message: 09/09/2008, 00h18
  3. Problème avec les templates de class
    Par _SamSoft_ dans le forum C++
    Réponses: 8
    Dernier message: 21/08/2008, 10h30
  4. Réponses: 3
    Dernier message: 08/07/2008, 15h06
  5. Problème avec vector de classe template :(
    Par coyotte507 dans le forum Langage
    Réponses: 7
    Dernier message: 16/04/2008, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo