neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008
-
4 déc. 2005 à 22:19
cs_Sunglasses
Messages postés8Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention11 juillet 2008
-
26 févr. 2008 à 21:05
Bonjour tout le monde !
pour un projet perso j'ai codé un template vector dans lequel on
spécifi la dimension du vecteur (ce qui donne par exemple
vector<3> pour un vecteur de dimension 3). Pour simplifier
la programmation avenir, j'ai donc décidé de redéfinir les opérateurs
, + et = (voir d'autre par la suite). Pour mon template cela semble
fonctionner.
J'ai ensuite décider d'encore améliorer la lisibilité de mon programme
en créant une classe CVector3 héritant de CVector<3>,
implémentant un constructeur prenant trois float en paramètre pour
initialiser le vecteur. La aussi c'est bon. Mon problème est que la
redéfinition d'opérateur ne semble pas fonctionner pour mon CVector3,
en effet v1 = v2 + v3 ne passe pas à la compilation:
"no match for 'operator=' in 'v2 =
v3.CVector3::.CVector<d>::operator+ [with int d
= 3](((const CVector<3>&)((const CVector<3>*)(&
v1.CVector3::))))"
D'après ce que je comprend il ne trouve aucun opérateur+ pour le
CVector3. Ma question est existe-t-il un moyen de dire au compilateur
de reprendre les opérateurs de la classe dont mon CVector3 hérite ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 7 déc. 2005 à 00:09
Hein ? t'es sur qu'on peut faire du template comme ca ? Le principe
c'est la généricité, l'inconnu, c'est un type, pas une variable. Enfin
je peux me tromper, mais j'ai encore jamais vu ca. D'ailleurs ca
m'étonnerait que ca existe ce genre de chose. SI tes sur de toi, tu
peux poser ta classe ici, pour que je vois l'allure :)
Sinon, pour ton problème, comme je comprend meme pas comment ta classe peut fonctionner. Je peux pas trop t'aider :)
cs_Sunglasses
Messages postés8Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention11 juillet 2008 26 févr. 2008 à 21:05
Si on sait à l'avance que le vecteur a une taille constante tout du long de l'execution du programme, c'est pas forcément un mauvais choix de le passer en paramètre du template au lieu de la passer en paramètre du constructeur.
Sinon ça serait pas mal de pouvoir jeter un coup d'oeil au code parcequ'en aveugle c'est pas génial.
A mon avis il suffirait de déclarer un truc du style :
typedef vector<3> cvector3
Mais l'histoire d'heritage d'un template me semble foireuse... a mon avis une classe héritant d'un template doit nécessairement être un template paramétré de la même manière.
(Bon je viens de voir la date du post... je répond quand même, mais en espérant que tu avais trouvé la solution depuis lors )