je veux pas entendre de 'les variables globales ça pue'.
pré-requis: connaissance sur les namespace (pour comprendre)
souvent, dans une même unité de compilation (un fichier quoi) on définit et utilise plusieurs fonctions/variables/classes localement utilisées. c'est à dire que ces éléments ne sont et ne doivent être utilisés qu'à l'intérieur de votre fichier.
vous êtes un programmeur C ou vous avez été mal enseigné: vous utilisez le spécificateur de portée 'static' pour rendre vos variables/fonctions 'privées' à votre fichier
Code :
- static int i;
- static void f();
|
2 constats rapides: vous avez souvent des problèmes avec vos objets statiques mal initialisés, vous n'arrivez pas à définir des classes privées au fichier.
le C++ apporte une réponse élégante et passe partout!
Code :
- namespace
- {
- int i;
- class Foo;
- void f();
- }
|
cela a pour effet de placer vos déclarations dans un référenciel lexical privé, donc inaccessible depuis d'autres unités de traduction, votre compilateur s'occupant de nommer sans équivoques les différents namespaces anonymes de vos fichiers.
Code :
- namespace
- {
- int i;
- class Foo;
- void f();
- }
- namespace
- {
- void g();
- }
|
ici, f() et g() sont déclarées dans le même namespace, puisque la déclaration des namespaces est incrémentale.
depuis le reste du code de votre fichier, appelez simplement ces éléments sans préfixes.
Message édité par Taz le 06-09-2003 à 12:43:19