surcharge de fonctions C++ - Programmation
Marsh Posté le 30-07-2001 à 14:25:07
Donne le le protoptype de ta fonction.
Et le libélé exacte de l'erreur.
Marsh Posté le 30-07-2001 à 14:25:24
certainement mais ce serait plus facile si tu envoyé le code par ce que là comme ça à vide....
Marsh Posté le 30-07-2001 à 14:30:34
voila les fonctions :
void graphicize (ITP_Position * position, ITP_Disk * disk)
void graphicize (ITP_Configuration * configuration, ITP_Triangle_Equilateral * triangle)
et l'appel:
graphicize(*((*index)->state), *((*index)->geometry));
et enfin l'erreur :
main/test.cc:189: call of overloaded `graphicize (ITP_State *&, ITP_Geometry *&)' is ambiguous
main/test.cc:127: candidates are: graphicize(ITP_Position *, ITP_Disk *) <near match>
main/test.cc:142: graphicize(ITP_Configuration *, ITP_Triangle_Equilateral *) <near match>
en sachant que position et configuration sont des classes filles de state et idem avec disk,triangle et geometry.
Marsh Posté le 30-07-2001 à 14:44:45
La meilleur solution est intégrer la fonction "graphicize" en temps que membre d'une des classes qui sont dans les arguments.
Comme ça c'est automatique.
Marsh Posté le 30-07-2001 à 14:49:09
malheureusement, je suis oblige de separer completement les classes qui sont en parametres et tout ce qui fait partie de la partie graphique, dont graphicize
Marsh Posté le 30-07-2001 à 15:04:56
En tout cas ne peux pas donc faire comme tu en avais l'intention.
C'est clair que les compilateur ne peut pas faire les choix à ta place. Donc la solution sera un peu plus compliqué.
Je te propose 2 solutions, il y en a surement d'autres:
* faire un classe de stockage par type d'objet + un classe de sotckage générale qui stocke les classes de stockages ( en plus tu gagne en optimisation). Comme ça tu sais quelle fonction "graphicize" il faut appeller.
* Tu fais un fonction "graphicize_general" qui appelle la bonne fonction 'graphicize' en fonction du type des objets.
Marsh Posté le 30-07-2001 à 15:09:59
Qu'est-ce que tu appelle exactement classe de stockage?
Sinon j'ai deja essaye la deuxieme solution, mais on me l'a refusee parce qu'il faut que j'utilise le polymorphisme a fond...
Marsh Posté le 30-07-2001 à 15:17:02
Tu ne pouras pas utiliser le polymorphisme dans ce cas, ou alors il faut changer ton model objet.
Tes objets IDT_xxxxxx sont sockés quelques part et tu souhaites faire un tranformtation dessus cet liste objet(graphicize).
Une classe de sockage sert à conserver cette liste objet et à en assurer l'intégrité. Un example bien connu est la classe Vector qui en inclus dans la STL.
Marsh Posté le 30-07-2001 à 15:25:52
Merci seblamb!!
bon va falloir que j'en discute avec mon patron la (c'est lui qui m'a dit de faire de cette facon donc faut qu'il assume )
Marsh Posté le 30-07-2001 à 14:23:42
Bonjour,
je dois surcharger une fonction qui utilise des pointeurs(de type differents lors de l'appel). J'ai essaye d'en creer une mais il y a une erreur a la compilation, a cause de l'ambiguite entre les 2 fonctions. Est ce qu'il y a un moyen de contourner le probleme?