matrice.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template < typename Type > class Matrice{
	public:
		Matrice();
		~Matrice();
		//fusion avec une autre matrice, aux points 1 et 2 resprésentés par xi,yi,zi
		//un pointeur sur la matrice résultat est renvoyé
		Matrice<Type> *fusion(Matrice *matrice2, int x, int y, int z,int x2,int y2,int z2);
 
	protected:		
		//crée un vecteur de vecteur de vecteur (dimension 3)
		std::vector < std::vector< std::vector<Type *> > >mat;
		Matrice *resultat;
 
};
matrice.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
template < typename T > Matrice<T>* Matrice < T >::fusion(Matrice *matrice2, int x, int y, int z,int x2,int y2,int z2){
...//fonction a executer
}
De plus j'ai une classe monType, qui est le type d'objet a utiliser dans la matrice
dans mon programme principal, tout marche bien si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Matrice<monType> *mat;
Matrice<monType> *mat2;
Matrice<monType> *resultat;
....
resultat=mat->fusion(mat2,0,0,0,0,0,0);
Seulement j'ai décidé de créer une classe qui gère ce type de matrice en incluant quelques fonction suppémentaires (ces fonctions marchent très bien).
Mais il se trouve que g tout de même un probleme:

MatriceMonType.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class MatriceCube : public Matrice<MonType>
{
public:
	MatriceMonType(void);
	MatriceMonType*fusion(MatriceMonType*matrice2, int x, int y, int z,int x2,int y2,int z2);
 
	//~MatriceCube(void);
...
 
protected:
	...
 
};
avec dans le .cpp
MatriceCube::MatriceCube(void):Matrice()
{
}

La classe MatriceMonType, hérite donc de matrice, en spécifiant le type MonType.
J'aimerais pourvoir appeler la fonction fusion sur cette classe en lui donnant en paramètre la 2emem matrice a fusionner.
Pour cela, la classe MatriceMonType devrait appeler la méthode fusion de la classe parent et retourner la matrice résultat sous forme de MatriceMonType


J'ai déjà tenté plusieurs choses sans succès.
1 - ne pas mettre de fonction fusion dans la classe MatriceMontype: l fonction fusion sera celel d la classe parent. Le probleme est que le renvoi est un pointeur sur matrice<MonType>, et non pas sur MatriceMonType, ce qui peut proser des pertes d'information lors d'un cast vzers un MatriceMonType.

2- redéfinir et surcharger la méthode fusion dans la classe fille:
MatriceMonType*fusion(MatriceMonType*matrice2, int x, int y, int z,int x2,int y2,int z2);
qui appelle la méthode de meme nom dans la classe mere (Matrice::fusion), mais se pose encore les problemes de muvais arguments (Matrice::fusion necessite un matrice<Type> or un MatriceMonType est passé. De plus, l'écriture Matrice::fusion(...) provoque une erreur car interprété comme un appel a une fonction statique.

en bref je suis plus ou moins perdu et j'aimerais avoir une solution simple sans pour autant a avoir a réécrire de nombreuses lignes de code inutile.

2- d'autres solution trouves sur internet mais qui ne donnent pas satisfaction, car ne corrigant pas ou partiellement le probleme)

merci pour votre aide.