Bonjour,

Je voudrais être sur et certain d'une chose sur l'utilisation de la STL.
En fait je veux où et quand est-ce qu'il faut mettre le using namespace std;, et aussi quand il faut rajouter std:: devant les objets/types provenant de la STL.

Sur un exemple simple, voila comment j'implémente d'habitude dites-moi si y'a un truc qui cloche ou qui pourrait être mieux écrit:

maclasse.h
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
#ifndef MACLASSE_H
#define MACLASSE_H
 
 
	#include <iostream>
	#include <string>
 
 
	class MaClasse {
 
		public:
 
			MaClasse( std::string chaine = "" );
			MaClasse( const MaClasse &mc );
			~MaClasse();
 
			friend std::ostream& operator<<(std::ostream &flux, const MaClasse mc);
 
 
		private:
 
			std::string chaine;
 
	};
 
 
#endif
maclasse.cpp
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
using namespace std;
 
#include <iostream>
#include <string>
#include "maclasse.h"
 
 
// Constructeur simple
MaClasse :: MaClasse( string chaine )
	: chaine(chaine) { }
 
// Constructeur par recopie
MaClasse :: MaClasse( const MaClasse &mc )
	: chaine( mc.chaine ) { }
 
// Destructeur
MaClasse :: ~MaClasse() { }
 
 
 
// Insertion de flux
ostream& operator<<(ostream &flux, const MaClasse mc) {
 
	return (flux << mc.chaine);
}
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using namespace std;
 
#include <iostream>
#include "maclasse.h"
 
 
int main() {
 
	MaClasse mc("Une chaine");
 
	cout << mc;
 
	return 0;
}