IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Où trouver une liste des opérateurs surchargeables en C++?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut Où trouver une liste des opérateurs surchargeables en C++?
    Bonjour,

    l'intitulé de la discussion se suffit à lui-même.
    Existe-t-il un document officiel?

    J'ai trouvé cette liste sur Wilkipedia.
    A première vue, ça a l'air sympa mais j'ai peur qu'il y ait des coquilles.
    Par exemple, l'opérateur = ne renvoie pas une référence (1ere ligne du tableau).
    Du coup, j'ai moyennement confiance...

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est simple ils le sont tous à l'exception de ce trois :

    operator. , operator:: et operator.*

  3. #3
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Merci pour ta réponse Goten.
    Il me semblait bien aussi.
    Mais, dans le document, il y en a plus.
    Par exemple, il est écrit que sizeof n'est pas surchargeable.
    Or, j'ai souvenir d'avoir lu le contraire (mais ma mémoire me fait peut être défaut).
    Bon, si je comprend bien, il est à jeter ce document...

    Sinon, j'ai remarqué que certains opérateurs ne sont surchargeables qu'à l'intérieur des classes.
    Pour la petite histoire, j'avais essayé de surcharger l'opérateur () pour faire un produit scalaire (u,v) en le déclarant comme fonction amie de ma classe vecteur.
    Où peut-on trouver ce genre d'information?

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Citation Envoyé par Goten Voir le message
    C'est simple ils le sont tous à l'exception de ce trois :

    operator. , operator:: et operator.*
    et de ?:

  5. #5
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    l'intitulé de la discussion se suffit à lui-même.
    Existe-t-il un document officiel?
    Oui, le standard. Voir §13.5 Overloaded operators
    (Le standard ISO du C++98 est payant, mais on peut trouver ici le draft gratuit du standard C++0X -chercher "working draft"-. Je ne crois pas qu'il y ait eu de modification entre le C++98 et le C++0X sur la surcharge d'opérateur)

  6. #6
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Super, merci Arzar!

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Si tu veux surcharger les opérateurs pour faire un truc malin, je te conseille plutôt d'utiliser Boost.Proto.
    Au lieu de surcharger les opérateurs toi-même, Proto les surcharge tous pour toi et te fournit direct un AST que tu peux manipuler. Tu peux même définir une grammaire qui va automatiquement refuser les AST invalides et y attacher des transformations.

    Ça fait peur au premier abord, mais en fait c'est super simple et très très pratique.

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    @loufoque: Je n'ai jamais utilisé Proto, mais c'est pas un outils qui sert seulement dans des cas spécifique (analyseur syntaxique/parseur/...) ? Je ne vois pas comment une bibliothèque pourrait savoir comme définir des opérateurs sans contexte particulier. Exemple typique : l'opérateur d'affectation, si il n'est pas trivial, je ne vois pas comment une bibliothèque pourrait le deviner. Ou alors tu lui conseillais ceci pour réaliser son produite scalaire ?

    (l'opérateur "" n'est pas dans la liste du dernier draft, il est cependant expliqué plus bas dans le draft).

  9. #9
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par Flob90 Voir le message
    @loufoque: Je n'ai jamais utilisé Proto, mais c'est pas un outils qui sert seulement dans des cas spécifique (analyseur syntaxique/parseur/...) ? Je ne vois pas comment une bibliothèque pourrait savoir comme définir des opérateurs sans contexte particulier. Exemple typique : l'opérateur d'affectation, si il n'est pas trivial, je ne vois pas comment une bibliothèque pourrait le deviner. Ou alors tu lui conseillais ceci pour réaliser son produite scalaire ?

    (l'opérateur "" n'est pas dans la liste du dernier draft, il est cependant expliqué plus bas dans le draft).

    Bien évidemment y'a un contexte par défaut mais tu peux aussi définir tes propres context d'évaluation. Le contexte par défaut attribut à chaque opérateur le sens que lui donne le standard.
    Par ailleurs y'a des choses plus puissantes que les context, comme les transform ( ~= action sémantique des parseurs).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] [débutante VBA] trouver la liste des images utilisée dans une feuille
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/10/2009, 13h46
  2. Trouver la liste des controls d'une page
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/08/2007, 11h47
  3. obtenir une liste des noms de session d'un ordinateur
    Par Raylemon dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/03/2006, 19h12
  4. [IDE][VS.NET 2003] Y a-t-il une liste des racourcis ?
    Par 404Found dans le forum Contribuez
    Réponses: 2
    Dernier message: 22/06/2004, 20h20
  5. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo