begin process at 2012 05 30 18:35:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Template, surdéfinition d'opérateur et héritage !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Template, surdéfinition d'opérateur et héritage !

dimanche 4 décembre 2005 à 22:19:34 | Template, surdéfinition d'opérateur et héritage !

neodelphi

Membre Club
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::<anonymous>.CVector<d>::operator+ [with int d = 3](((const CVector<3>&)((const CVector<3>*)(& v1.CVector3::<anonymous>))))"

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 ?

Merci d'avance pour vos réponse...

neodelphi
mercredi 7 décembre 2005 à 00:09:20 | Re : Template, surdéfinition d'opérateur et héritage !

luhtor

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 :)
mercredi 7 décembre 2005 à 00:20:31 | Re : Template, surdéfinition d'opérateur et héritage !

vecchio56

Administrateur CodeS-SourceS
template class A { public: A() { std::cout << n << std::endl; } }; int main() { A<4> a; return 0; } Ca n'a pas grand intérêt, ca revient à passer le nombre en question en paramètre au constructeur
mardi 26 février 2008 à 21:05:50 | Re : Template, surdéfinition d'opérateur et héritage !

Sunglasses

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 )


Cette discussion est classée dans : template, vecteur, opérateur, cvector3, cvector


Répondre à ce message

Sujets en rapport avec ce message

une file Template dans un Vecteur Template [ par grand_duck ] voici le problème j'ai une classe de vecteur template et une classe de file template je voudrais mettre ma file template dans mon vecteur est-ce possi Surdéfinition d'opérateur et constantes [ par neodelphi ] Bonjour tout le monde! J'ai écrit une classe CVector3 dans laquelle j'ai redéfini plusieurs opérateurs. Cela fonctionne correctement excepté lorsque Classe contenant vecteur template [ par val3113 ] Bonjour,Je suis sur un programme cpp sous linux. J'ai créé une classe template "Vecteur" qui est censée pouvoir recevoir plusieurs types dont des clas Interruption = case tete :( [ par Booster ] Bonjour à tous, Alors voilà je m'intéresse aux interruptions et j'ai un problème de "vocabulaire" en fait j'aimerais connaître la différenc Deux meme string dans un vecteur. [ par frayst ] Voila je vous explique ma situation : J'ai un vecteur string dans lequel jattribue des mots (dont certains sont les memes = Bonjour et Salut) : vector programme d'une somme de matrice [ par awalle ] bon soir tout le monde!ben mon problème est consiste à programmer la formule suivante en code C;.sum(i=1:n)(sum(j=1:n)Eax(xi,yj)*kx(i)*ky(j));avec:Eax A quoi correspond le : (seul pas ::) [ par Sim 2005 ] Dans une source j'ai trouvé l'opérateur : . A quoi cela correspond-il (est-ce bien un opérateur).Voici le lien vers la source : http://www.cppfrance.c Spécialisation template et fonctions inline [ par Samaths ] Bonjour à tous!Je suis nouveau sur le forum, mais je programme en C++ depuis quelques temps déjà (3 ans). Dans le cadre d'un projet (niveau universita Heritage Templates [ par ricklekebekoi ] Bonjour,Premiere utilisation des templates, et je frappe un mur .... dites moi ce que j'ai pas compris :En gros j'ai une classe générique symboleEt j' pb DLL et template [ par axiagame ] Bonjour, je suis en train de tenter de créer une DLL, mais malheureusement je suis heurté à un problème : Je souhaite créer une fonction en template q


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,262 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales