Académique Documents
Professionnel Documents
Culture Documents
Achref El Mouelhi
elmouelhi.achref@gmail.com
C++
Namespace ?
H I ©
EL
Espace de stockage abstrait (n’existe pas physiquement)
U
O
Répertoire virtuel
f E LM
ch r e
Conçu pour développer des structures fonctionnelles sans avoir
©A
de conflit de nom
void direBonjour();
I ©
void direBonjour();
H
#endif #endif
UEL
O
f E LM
Fichier salutationFr.cpp
ch r e Fichier salutationEn.cpp
©A
#include <iostream> #include <iostream>
#include "salutationFr.h" #include "salutationEn.h"
C++
Le contenu de la fonction principale main
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
H I ©
using namespace std;
UEL
O
LM
int main()
{
r e f E
ch
direBonjour();
©A
}
C++
Le contenu de la fonction principale main
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
H I ©
using namespace std;
UEL
O
LM
int main()
{
r e f E
ch
direBonjour();
©A
}
C++
Première solution
Faire include d’un seul fichier
H I ©
UEL
O
f E LM
ch r e
©A
C++
Première solution
Faire include d’un seul fichier
H I ©
UEL
Mais O
f E LM
ch r e
dans certains cas on a besoin d’utiliser les deux
©A
C++
Première solution
Faire include d’un seul fichier
H I ©
UEL
Mais O
f E LM
ch r e
dans certains cas on a besoin d’utiliser les deux
©A
Deuxième solution
Définir chacune de ses fonctions dans un namespace différent.
namespace fr namespace en
{
void direBonjour();
{
I ©
void direBonjour();
H
EL
} }
#endif
O
#endif
U
f E LM
Fichier salutationFr.cpp
ch r e Fichier salutationEn.cpp
©A
#include <iostream> #include <iostream>
#include "salutationFr.h" #include "salutationEn.h"
namespace fr namespace en
{ {
void direBonjour() void direBonjour()
{ {
cout << "Bonjour" << endl; cout << "Good morning" << endl;
} }
} }
C++
Il reste qu’à préciser le namespace au moment de l’appel
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
H I ©
EL
using namespace std;
int main()
O U
{
fr::direBonjour();
f E LM
en::direBonjour();
ch r e
©A
}
C++
Il reste qu’à préciser le namespace au moment de l’appel
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
H I ©
EL
using namespace std;
int main()
O U
{
fr::direBonjour();
f E LM
en::direBonjour();
ch r e
©A
}
Bonjour
Good morning
C++
On peut aussi utiliser l’opérateur using comme pour std
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
C++
On peut aussi utiliser l’opérateur using comme pour std
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
Même résultat
Bonjour
Good morning
C++
H I ©
EL
namespace en
{
O U
LM
void direBonjour();
namespace us
r e f E
ch
{
©A
void direBonjour();
}
}
#endif
C++
Nouveau contenu de salutationEn.cpp
#include <iostream>
#include "salutationEn.h"
H I ©
EL
namespace en
{
void direBonjour()
O U
{
f
cout << "Good morning" << endl;
E LM
}
ch r e
©A
namespace us
{
void direBonjour()
{
cout << "Good mornin" << endl;
}
}
}
C++
Pour tester
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
int main()
{
direBonjour();
en::direBonjour();
en::us::direBonjour();
}
C++
Pour tester
#include <iostream>
#include "salutationFr.h"
#include "salutationEn.h"
int main()
{
direBonjour();
en::direBonjour();
en::us::direBonjour();
}
Bonjour
Good morning