Bonjour à tous,
Alors voici mon problème. J'ai défini dans une première librairie des classes RATIONAL et COMPLEX qui viennent compléter les types standards unsigned int, int, et double. Dans les classes RATIONAL et COMPLEX j'ai défini des méthodes publiques
pour l'affichage. Jusque là tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 STRING COMPLEX::SHOW(STRING buffer) const
Ensuite j'ai créer une classe template MATRIX, avec là encore une méthode pour l'affichage de la matrice
qui fait implicitement appel aux méthodes d'affichage SHOW du type utilisé dans la matrice (à savoir RATIONAL, COMPLEX, int, double ...). Cependant la méthode SHOW n'existe que pour les classes que j'ai créées à savoir RATIONAL et COMPLEX. En effet pas il n'y a pas de méthodes publiques SHOW associées aux types int ou double par exemple... Alors certes je peux (ce que j'ai fait jusqu'alors) considérer les cas particuliers de l'affichage des type standards comme int ou double en faisant des méthodes spécifiques à ces types dans la classe template MATRIX...
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 template<class T> char *MATRIX<T>::SHOW(char *buffer) const { unsigned int i, j; char buffer_aux[50]; strcpy(buffer, ""); for(i=0;i<L;i++) { for(j=0;j<C;j++) { strcat(buffer, (*this)(i,j).SHOW(buffer_aux)); strcat(buffer, "\t"); } strcat(buffer, "\n"); } return buffer; }
Mais je me demandais s'il n'aurait pas été possible d'associer des méthodes SHOW() aux types double ou int sans pour autant recréer toute une classe associée à un type standard ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char *MATRIX<unsigned int>::SHOW(char *buffer) const; char *MATRIX<int>::SHOW(char *buffer) const; char *MATRIX<double>::SHOW(char *buffer) const;
Merci par avance pour vos réponses.
PS : D'autre part j'aurais une autre question purement technique... je compilais jusqu'alors mon code avec une version un peu ancienne (1 an à peu près) de g++ et je m'aperçois que de nouvelles erreurs sont détectées (notamment dans la déclaration et l'implémentation de classes Template filles) quand je recompile ce même code avec la version 3.4.2 de ce même compilateur... Si quelqu'un à une explication ... merci de votre aide !
Partager