bonjour,
Ce n'est pas dans la faq et la recherche par mot clef se fiche des { } donc je pose (ou sans doute repose )la question :
Comment surcharge-t-on operator{}?
Merci d'avance.
bonjour,
Ce n'est pas dans la faq et la recherche par mot clef se fiche des { } donc je pose (ou sans doute repose )la question :
Comment surcharge-t-on operator{}?
Merci d'avance.
{} n'est pas un opérateur, donc on ne peut pas le surcharger. On peut par contre surcharger [] et (). Pour quelle raison voudrais-tu surcharger {} ?
C'est vrai que ce n'est pas possible a l'heure actuelle. Il faudrait peut etre le proposer pour la prochaine norme, tout comme on a bien proposé de surcharger l'opérateur ' ' (espace):
http://www.research.att.com/~bs/whitespace98.pdf
![]()
ah...
Je pensais l'avoir vu une fois.
On s'en sert quand on veut remplir un tableau a la main mais avec des valeurs connues :
Comment c'est code alors?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int *tab={1,2,3,7};
PS : j'ai pas d'accent sur ce clavier
On l'utilise bien pour cela (entre autres), mais ça n'a rien d'un opérateur.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Les accolades sont des délimiteurs.
Elles peuvent délimiter des structures de données, des blocs de code ou des tableaux (lors de l'initialisation d'une variable).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Il sera possible dans la prochaine norme (C++0x) d'utiliser des listes d'initialisation pour les types définis par l'utilisateur. Ainsi, il sera (enfin !) possible d'écrire
par exemple, mais ce n'est pas le cas pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part vector<int> vec = {1, 2, 3, 4};
Donc c'est faisable uniquement s'il s'agit de structure et pas de classe... du fait du rangement brut (C). C'est pour ca qu'on peut le faire sur des int, des char* et les types de base mais pas le reste. OK.
Bon bah vivement la prochaine norme![]()
Elle a l'air vraiment sympa cette nouvelle norme. Je n'ai aps lu toutes les propositions en détail mais ça a l'air vraiment bien (ça, les rvalues références, tout ce qui concerne boost...). Vivement qu'elle soit dispo :p.Envoyé par stillman
Personnellement, je trouve que l'amélioration la plus importante est l'introduction des concepts...mais ceci n'est pas le sujet pour en discuter! -> Avenir du C++
Il y a une astuce, presqu'un hack, utilisé par certain pour ce genre d'initialisation, qui consiste à écrire un truc genre :Envoyé par DEVfan
maClasse = 1, 2, 3, 4, 5, 6;
Mais il ne se base pas sur la surcharge des {} (qui n'est pas possible, et d'ailleurs, il n'y en a pas) mais sur la surcharge de l'opérateur = et de l'opérateur ,
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Ca se surcharge comment d'ailleurs l'opérateur , ?
Comme tous les autres. On trouve un exemple là.Envoyé par Bakura
(edit : suppression d'une erreur concernant le nombre de paramètres).
Ce serait pas plutôt 2 ?Envoyé par roulious
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Si, faudrais que je me relise plus avant de poster. Hop, j'éditeEnvoyé par Laurent Gomila
![]()
A noter néanmoins que cette proposition ne permet de faire ceci que d'une manière relativement peu performante.Envoyé par stillman
Partager