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 :

Evaluation d'une expression


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut Evaluation d'une expression
    Hello,

    J'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    entities[name] = CMediaManager::instance()->getMedia<CEntity>(filename);
    où entities est une std::map et getMedia peut lever une exception.

    Ce que je trouve bizzard : Si "getMedia" lève une exception, j'ai quand même un ajout dans la std::map qui se fait !

    N'est-il pas censé d'abord évaluer l'expression de droite et si elle réussi (pas d'exception), il fait l'affectation ?!

    Merci...

  2. #2
    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 : 51
    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
    Par défaut
    Tu as écrit un truc genre :
    Dans ce cas, rien n'oblige à évaluer f avant g ou l'inverse. L'évaluation de f, qui est chez toi entities[name] crée un élément dans le map, avec une valeur par défaut, et retourne une référence vers cet élément. Rien ne sera affecté à cette référence, car une exception sera lancée avant, mais il a déjà été créé.

    Si tu es sur que l'élément n'existe pas déjà dans la map, le plus simple pour éviter son ajout en cas d'exception est d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    entities.insert(make_pair(name, CMediaManager::instance()->getMedia<CEntity>(filename)));
    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.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    Merci

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/08/2006, 15h32
  2. evaluation d'une expression arithmetique
    Par yasmine77 dans le forum C++
    Réponses: 4
    Dernier message: 04/04/2006, 09h11
  3. [Oracle 9i] Evaluation d'une expression
    Par Process Linux dans le forum Oracle
    Réponses: 2
    Dernier message: 21/03/2006, 12h55
  4. Evaluation d'une expression arithmétique
    Par MysticKhal_0 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 10/03/2006, 18h25
  5. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17

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