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.
Version imprimable
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
:D
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:
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.
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).
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: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:lol:
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.Citation:
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 :ccool: ! -> 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 :Citation:
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 ,
Ca se surcharge comment d'ailleurs l'opérateur , ?
Comme tous les autres. On trouve un exemple là.Citation:
Envoyé par Bakura
(edit : suppression d'une erreur concernant le nombre de paramètres).
Ce serait pas plutôt 2 ?Citation:
Envoyé par roulious
Si, faudrais que je me relise plus avant de poster. Hop, j'édite :)Citation:
Envoyé par Laurent Gomila
Merci :).
A noter néanmoins que cette proposition ne permet de faire ceci que d'une manière relativement peu performante.Citation:
Envoyé par stillman
pas mal le coup de l'operator, ...je vais essayer:king: