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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
STRING COMPLEX::SHOW(STRING buffer) const
pour l'affichage. Jusque là tout va bien.

Ensuite j'ai créer une classe template MATRIX, avec là encore une méthode pour l'affichage de la 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
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;
}
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
 
char *MATRIX<unsigned int>::SHOW(char *buffer) const;
char *MATRIX<int>::SHOW(char *buffer) const;
char *MATRIX<double>::SHOW(char *buffer) const;
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 ??

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 !