matrice.h
matrice.cpp:
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; };
De plus j'ai une classe monType, qui est le type d'objet a utiliser dans la matrice
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 }
dans mon programme principal, tout marche bien si je fais
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).
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);
Mais il se trouve que g tout de même un probleme:
MatriceMonType.h
avec dans le .cpp
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: ... };
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.
Partager