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 :

Framework et erreurs de compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut Framework et erreurs de compilation
    Bonjour,

    J'ai régulièrement des message d'erreur de compilation ambiguïté entre windows et word_2K::windows dans les fichiers de la bibliothèque C++
    Comment puis je résoudre ces problème sans toucher au framework?

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    Bonjour,

    J'ai régulièrement des message d'erreur de compilation ambiguïté entre windows et word_2K::windows dans les fichiers de la bibliothèque C++
    Comment puis je résoudre ces problème sans toucher au framework?
    Salut,

    De la manière la plus simple qui soit: en bannissant toute utilisation de la directive using namespace (donc, concrêtement, de la directive using namespace word_2k, sans doute )dans ton code, et, principalement, dans les fichiers d'en-tête (car ce point particulier est à considérer comme une erreur monumentale).

    Cela t'oblige, il est vrai, à utiliser systématiquement le terme word_2k::windows au lieu de windows, mais cela t'évitera tout risque d'ambiguité: windows s'appliquera à la classe qui ne vient pas de word_2k, et word_2k::windows s'appliquera... à lui-même
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut using namespace
    Bonjour
    Je retiens ton information
    J'ai beaucoup de directive
    mais pas -sous réserve de vérification..; en cours -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using namespace word_2k;
    il y en a aussi dans le frameword ( des std)

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut namespace Word_2k
    Bonjour
    J'ai trouvé dans le framework
    mais pas d'autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using namespace Word_2k;

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Il faut, de manière générale, faire très attention aux directives using namespace...

    Déjà, je ne suis pas partisan de leur utilisation dans les fichiers d'implémentation, car elles ont pour résultat de "casser" le but recherché par l'utilisation des espaces de noms:

    En effet, les espaces de noms ont, justement, pour but de permettre que que chaque classe définie en leur sein soit identifiée de manière unique, et donc, au final, d'éviter les ambigüités lorsque, pour notre plus grand malheur, deux bibliothèques définissant une classe portant un nom identique, se retrouvent regroupé au sein d'un même fichier.

    Lorsque tu utilise la directive using namespace, tu indique d'utiliser ce qui se trouve à l'intérieur de cet espace de noms exactement comme si cela se trouvait dans l'espace de noms global.

    Si, du fait de la directive, tu te retrouve avec deux classes portant le même nom qui sont considérées comme se trouvant dans l'espace de noms globlal, tu te retrouve de nouveau face à l'ambigüité, et donc, face à l'obligation d'utiliser le nom "long".

    De plus, si tu utilises cette directive dans un fichier d'en-tête, elle va se répandre comme une trainée de poudre par le jeu des inclusions en cascades: si elle se trouve dans le fichier A.h, qui est inclus dans B.h, qui est lui-même inclus dans C.h qui, enfin, est inclus dans C.cpp, la directive sera utilisée de manière invisible pour le lecteur du code de C.cpp...

    Au final, je préfères bien souvent utiliser un alias d'espace de noms si, vraiment, le nom complet devient trop long à utiliser plutôt que la directive using namespace
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut using namespace std;
    Bonjour,
    J'ai donc retiré cette directive dans 55 fichiers....
    Mais j'ai toujours le résultat précédent
    3 erreurs de compilation windows::word_2k dans filectrl.hpp
    6 erreurs de compilation id° dans comctrls.hpp

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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