Surcharger une fonction (sans changer la signature)
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007
-
15 mars 2007 à 23:50
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007
-
18 mars 2007 à 11:37
Bonjour, voilà j'aimerais simplement avoir une fonction "int fonction();" et une autre "char fonction();". Comme la signature est la même, je ne peux pas faire ca simplement :_
Y'aurait il une astuce ? les template peut etre ... ?
merci
A voir également:
Surcharger une fonction (sans changer la signature)
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007 17 mars 2007 à 11:52
SAKingdom tu dis que c'est possible en C++ grace aux classes, je peux savoir comment ?
vecchio => enfaite si je veux surcharger la fonction, c'est justement pour qu'elles aient le meme nom ^^
je vous explique plus en détail ce que je fais (jsais pas si c'est utile m'enfin ...) :
je suis à l'intérieur d'une classe appelée LogFile et je souhaite surcharger la fonction GetTabEn(); , comme ceci :
ENREGISTREMENT * GetTabEn(void);
std::deque<ENREGISTREMENT> GetTabEn(void);
ENREGISTREMENT étant une structure perso.
j'obtiens l'erreur là :
std::deque<ENREGISTREMENT, std::allocator<ENREGISTREMENT> > LogFile::GetTabEn()' and `ENREGISTREMENT* LogFile::GetTabEn()' cannot be overloaded
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 17 mars 2007 à 13:33
Oui mais ça ne te sert à rien que les deux fonctions aient le même nom
Tu veux faire ca:
ENREGISTREMENT* e = GetTabEn();
std::deque<ENREGISTREMENT> d = GetTabEn();
Quelle différence avec ca?
ENREGISTREMENT* e = GetTabEn1();
std::deque<ENREGISTREMENT> d = GetTabEn2();
_____________________________________
Un éditeur de ressources gratuit pour Windows
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 17 mars 2007 à 17:54
On n'a pas le droit de surcharger une fonction en changeant seulement le type de retour:
le seul truc que tu peux faire c'est passer un pointeur (ou un ref) pour récupérer la valeur, dans ce cas la surcharge est possible :
julien_boss
Messages postés165Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention24 octobre 2007 18 mars 2007 à 11:37
bon finalement c'est une grosse connerie puisque la fonction ne saurait pas quoi retourner entre les 2 types. Je vais donc contourner le probleme comme on me le proposait merci