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 :

using namespace automatique ?


Sujet :

C++

  1. #1
    Membre chevronn� Avatar de Rayndell
    �tudiant
    Inscrit en
    Mai 2007
    Messages
    289
    D�tails du profil
    Informations personnelles :
    �ge : 38

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par d�faut using namespace automatique ?
    Bonjour,

    J'ai quelques probl�mes avec l'application C++ que je d�veloppe. Je dois int�grer � mon application d�j� existante un package appel� "nauty". Le probl�me est ici que ce package d�fini un type "set". Il vient alors un conflit entre ce type et le type "set" d�fini par la stl. Cela ne poserait aucun probl�me normalement, puisque le type set de la stl est d�clar� dans le namespace std, il suffirait donc d'�viter de mettre "using namespace std;" pour �viter les conflits. Le probl�me ici, c'est que les fonctions du namespace std ont l'air d'�tre automatiquement d�clar�es dans le namespace global (c'est � dire que je peux utiliser les fonctions cin out cout par exemple, sans passer par std::cin ou std::cout, et le tout sans faire de "using namespace std;"). Avez-vous une id�e d'o� le probl�me peut venir. Est-ce que dans la derni�re version du compilateur g++ le namespace std est dans le namespace global. Si oui, comment puis-je r�gler ces probl�mes de conflit ? Pour info, je poste les diff�rents include que j'utilise :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <arpack++/arlssym.h>
     
    #include "CImg.h"
     
    #include <nauty.h>
     
    #include <cstdlib>
     
    #include <iostream>
     
    #include <vector>
     
    #include <set>
     
    #include <stack>
     
    #include <queue>
     
    #include <map>
     
    #include <cmath>
     
    #include <fstream>
     
    #include <ctime>
     
    #include <algorithm>
     
    #include <armadillo>
     
    #include <string>
     
    #include <sstream>
     
     
     
    using namespace cimg_library;
     
    using namespace arma;

  2. #2
    Membre chevronn�
    Avatar de haraelendil
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2004
    Messages
    283
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 283
    Par d�faut
    il ne trainerait pas un using namespace std; dans un de tes fichiers d'ent�te par hasard?

  3. #3
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    D�tails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par d�faut
    Le probl�me ici, c'est que les fonctions du namespace std ont l'air d'�tre automatiquement d�clar�es dans le namespace global (c'est � dire que je peux utiliser les fonctions cin out cout par exemple, sans passer par std::cin ou std::cout, et le tout sans faire de "using namespace std;"). Avez-vous une id�e d'o� le probl�me peut venir.
    Le probl�me vient tr�s probablement du fait qu'un zigoto � �crit quelque part un "using namespace std" dans un .h,

    La directive using namespace doit �tre banni des headers car sinon elle se propage par inclusion et pollue le namespace globale comme tu viens d'en faire la douloureuse exp�rience.

    (D'ailleurs Rayndell, tu tombes dans le m�me travers avec ton "using namespace cimg_library;" et "using namespace arma;" en plein dans un .h.
    La directive va se propager et une personne qui voudra reprendre ton code risque d'avoir des conflits assez incompr�hensible s'il a le malheur de d�clarer un type qui existe d�j� dans arma ou cimg.)

    Une petite remarque :
    Ecrire "cimg_library::" devant chaque type de la biblio cimg serait quand m�me un peu p�nible, en revanche on peut aussi d�clare un alias de namespace comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    namespace cimg = cimg_library;
    Si oui, comment puis-je r�gler ces probl�mes de conflit ?
    1) Le plus simple serait de trouver et de supprimer le "using namesapce std" fautif.
    2) Mais si ce using namespace std est dans du code non modifiable... euu t'es mal . Il faudra alors probablement modifier le code qui d�clare le type set rentrant en conflit avec std::set et le mettre dans un namespace.

  4. #4
    Membre chevronn� Avatar de Rayndell
    �tudiant
    Inscrit en
    Mai 2007
    Messages
    289
    D�tails du profil
    Informations personnelles :
    �ge : 38

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par d�faut
    Non, c'est la premi�re chose que j'ai v�rifi�e.

  5. #5
    Membre chevronn� Avatar de Rayndell
    �tudiant
    Inscrit en
    Mai 2007
    Messages
    289
    D�tails du profil
    Informations personnelles :
    �ge : 38

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par d�faut
    Je retire ce que j'ai dit, je viens de le trouver.

    Merci de votre aide et d�sol� du d�rangement.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. using namespace std;
    Par elekis dans le forum SL & STL
    R�ponses: 27
    Dernier message: 26/03/2006, 23h01
  2. using namespace std Vs std::
    Par BigNic dans le forum SL & STL
    R�ponses: 12
    Dernier message: 24/01/2006, 15h26
  3. probleme avec : using namespace
    Par firejocker dans le forum C++
    R�ponses: 3
    Dernier message: 28/11/2005, 12h15
  4. using namespace std...
    Par miminou dans le forum SL & STL
    R�ponses: 14
    Dernier message: 24/10/2005, 10h20

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