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 :

Forcer un cast explicite


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Activité
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Activité

    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 88
    Points
    88
    Par défaut Forcer un cast explicite
    Bonjour,

    Supposons que j'ai une classe Money.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Money
    {
    public:
      explicit Money(double valeur);
      operator double();
    }
    J'ai utilisé le mot clé "explicit" pour la première conversion. Ainsi, l'utilisateur doit effectuer ceci pour que son programme compile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Money monMoney = (Money)5.0;
    Cependant, le compilateur ne veut pas que je mette le mot clé "explicit" devant l'opérateur cast. L'utilisateur peut donc faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double valeur = monMoney;
    Y a-t-il un moyen de forcer l'utilisateur à écrire ceci pour ne pas générer d'erreur de compilation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double valeur = (double)monMoney;
    Merci!!!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Vouloir rendre explicite un opérateur de cast implicite... y a quelque chose qui ne va pas là

    Faire une action de manière explicite, ça s'appelle appeler une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double valeur = monMoney.ToDouble();

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il est prévu d'ajouter la possibilité de mettre explicit devant un opératuer de cast en C++0x, mais ça n'empêchera quand même pas l'utilisateur d'écrire :
    Tout comme il peut déjà écrire avec ton code :
    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.

  4. #4
    Membre régulier
    Homme Profil pro
    Activité
    Inscrit en
    Juillet 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Activité

    Informations forums :
    Inscription : Juillet 2005
    Messages : 94
    Points : 88
    Points
    88
    Par défaut
    Mmm.. intéressant!

    Je vais utiliser une méthode dans ce cas.

    Merci à tous!

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

Discussions similaires

  1. Conversion cast implicite et mot clef "explicit"
    Par nikopol82 dans le forum Langage
    Réponses: 7
    Dernier message: 08/11/2009, 20h07
  2. [C#] cast vs conversion explicite, optimisation
    Par sneakysponge dans le forum C#
    Réponses: 10
    Dernier message: 04/02/2009, 18h58
  3. cast explicite requis pour type void **
    Par ram-0000 dans le forum C++
    Réponses: 2
    Dernier message: 30/04/2008, 17h47
  4. convertion explicite (casting )
    Par elmcherqui dans le forum C++
    Réponses: 5
    Dernier message: 11/04/2008, 22h17

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