arguments par défaut - C++ - Programmation
Marsh Posté le 01-03-2010 à 17:55:48
En supposant que 0 soit implicitement convertible en maclasse<T> (par un constructeur non explicite prenant un int par exemple), il reste un double probleme:
- tu veux une reference non const, 0 ne sera jamais autorise;
- meme si tu prends une reference const, comme c'est la seule apparition de T2, T2 ne sera jamais deduit.
Apres avoir ajoute un const pour que le dernier parametre soit constant et specifie explicitement T2, ca devrait compiler:
Code :
|
Marsh Posté le 01-03-2010 à 18:56:20
Ok,
j'ai pas été clair, je crois. J'avais mis T1 et T2 pour indiquer que les types sont différents, mais ils sont explicites dans le code (int et float64). D'après ce que tu m'expliques, j'ai deux solutions, soit je mets mon paramètre par défaut comme référence constante et je défini
Code :
|
soit (peut être la solution la plus fool-proof) je surcharge fonction comme ça :
Code :
|
La question que je me pose toujours est : que faut il faire pour que, quand je défini une classe, elle puisse avoir un élément nul?
Marsh Posté le 01-03-2010 à 19:22:53
Je ne vois pas l'intérêt d'avoir systématiquement un élément exceptionnel, et je vois un intérêt à parfois ne pas en avoir.
En général, je préfère la surcharge aux arguments par défaut (les arguments ayant un défauts peuvent ne pas être à la fin, on n'a pas de mauvaise surprise quand on veut un pointeur de fonction, ...)
Marsh Posté le 01-03-2010 à 19:50:58
surcharge toujours, les référence avec un "par defaut", ca sent la paté
Marsh Posté le 01-03-2010 à 20:01:03
Je suis d'accord avec vous pour la surcharge. Après y avoir réfléchi, mon idée de départ était un peu pourrave et j'ai un peu honte d'avouer que je n'avais pas pensé à la surcharge tout de suite.
@Joel, pour le coup je suis content de ne pas avoir register avec mon prénom, sinon je pense que j'en aurais pris plein la tronche ^^.
Marsh Posté le 01-03-2010 à 17:42:33
Salut à tous,
je cherche à passer à une fonction des arguments par défaut d'un type non standard (une référence vers une instance d'une classe définie dans mon code). Y'a-t-il un moyen de faire ça. Concretement :
J'entrevois des moyens de le faire (caster 0 en maclasse<T2>, par exemple), mais tout ça m'a l'air assez sale. Quelle serait la bonne solution?
S.