11 Utilisateur(s) en ligne

Les espaces de noms (namespace) en C++

Par babycool


Pour des besoins d'implémentation et de clarté du code, il est parfois intéressant de modulariser son code. Modulariser ? C'est à dire découper son code en plusieurs "bouts" pour le rendre plus lisible, ou pour rendre telle classe plus explicite. Pour modulariser son code, on utilise les espaces de nom.

  • Comment utiliser un espace de nom :
C'est très simple, on l'emploie comme cela :

namespace LeNomDeVotreEspaceDeNom
{
     int f();
     int MonEntier=0;
     //etc...
}; //pas oublier le point-virgule


Un espace de nom n'a jamais aussi peu d'objets ou de fonction dedans, évidemment.
Si on veut utiliser dans son code la variable MonEntier de l'espace de nom précédent, on fait ainsi :

int main()
{LeNomDeVotreEspaceDeNom::MonEntier=2;}

Pour pouvoir utiliser toutes les variables, fonctions ou classes de votre espace de nom sans avoir besoin de mettre LeNomDeVotreEspaceDeNom à chaque fois (qui devient vite redondant), on utilise le mot clé using. Pour ce faire, on procéde ainsi :

using namespace LeNomDeVotreEspaceDeNom;
int main()
{
     MonEntier=25;
}

Cette méthode est bonne, mais il faut faire attention aux conflits. Imaginons que l'on estdéfinie une fonction f() dans le code ET dans notre espace de nom, si on utilise using namespace il y aura un conflit

using namespace LeNomDeVotreEspaceDeNom;

int f(){/* blabla*/}

int main()
{
     cout<<f();//erreur à la compilation, quel f() utilisé ?
     cout<<LeNomDeVotreEspaceDeNom::f();//correct
}

Comme vous le constatez, le mot clé using n'a pas que des bon cotés. Pour éviter ce genre de problème, il vaut mieux éviter de mettre des noms de fonction banales à ses fonctions, classes, etc... dans son espace de nom.


Publié le: dimanche 27 décembre 2009 (765 lectures)
Copyrights © par Oltana.net

Format imprimable  Envoyer cet article à un(e) ami(e)

[ Retour ]