pourquoi ne faut til pas mettre le .h dans qd on inclut....

pourquoi ne faut til pas mettre le .h dans qd on inclut.... - C++ - Programmation

Marsh Posté le 04-08-2003 à 19:42:23    

un header pour la stl
genre #include <vector>
 
????

Reply

Marsh Posté le 04-08-2003 à 19:42:23   

Reply

Marsh Posté le 04-08-2003 à 19:51:54    

par ce que les fichiers d'en-tete de la derniere norme (C++98, ç dat quand même), n'ont pas d'extension. rien de magique. le vieux .h sont gardés pour compatibilité avec les ivuex programmes, mais les compilos vont être de plus en plus enclin à gueuler contre ça

Reply

Marsh Posté le 04-08-2003 à 20:46:48    

par exemple dans mon prog qd je passe de <iostream.h> a <iostream> jai des erreurs que javais pas avant :
 
 

Code :
  1. cout << "personne 1 > " << p1 << endl;
  2. cout << "personne 2 > " << p2 << endl;
  3. cout << "personne 3 > " << *p3 << endl;
  4. ->  operator << is ambigous
  5. ostream& operator <<(ostream& out,const personne& p1){
  6. out << "Nom : " << p1.nom << endl;
  7.         out << "Prenom : " << p1.prenom << endl;
  8. out << "Age : " << p1.age << endl;
  9. out << "Special : " << p1.special << endl;
  10. return out;
  11. }
  12. -> cannot access private member nom , prenom, age,...


Message édité par red faction le 04-08-2003 à 20:47:09
Reply

Marsh Posté le 04-08-2003 à 20:47:35    

using namespace std;

Reply

Marsh Posté le 04-08-2003 à 20:50:03    

ben ca ete fait
 
ou alors c encore une des fourberies de visual c

Reply

Marsh Posté le 04-08-2003 à 20:52:16    

ta deuxiemme erreur vient surement du fait que tes membres sont declarés en private non?
 
et le premiere vient surement du fait que tu as declaré iostream au lieu de iostream.h  
[:sinclaire]


Message édité par polo021 le 04-08-2003 à 20:52:41
Reply

Marsh Posté le 04-08-2003 à 20:54:45    

ou c du private mais la fonction est en friend donc c pas la le probleme
 
sinon si je fait passer le iostream en .h a ce moment c le string qui va plus
 

Code :
  1. string text = "hello";
  2. cout <<  text << endl;
  3. -> cannot convert text from ....

Reply

Marsh Posté le 04-08-2003 à 20:57:51    

fourberie de VC++...

Reply

Marsh Posté le 04-08-2003 à 21:05:58    

Se changement correspond à un changement de sémantique ou à un simple renomage des fichiers d'entête (style on passerai de "tu inclus le fichier machin.h texto" à "je vais utiliser le contenu de la bibliothèque machin, tu te démerdes pour que ça soit dispo pour le compilo" ) ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 04-08-2003 à 21:13:08    

enfait jviens de refaire quelques classes de base pour me rexercer un peu en c++ (rien de super complique juste de laffichage de valeur , constructeur de copie , bref des trucs tout simple)  
jusque la tout va bien
 
puis qd jai eu fini jai remarque que  string text = "xxxx";cout << text; ne passait pas alors j'ai iostream.h en iostream , j'ai rajoute using namespace std; puis jai compile
 
le  cout du string marche mais dans une des classes y veut plus accedde au donnee privees ainsi que le ambigous


Message édité par red faction le 04-08-2003 à 21:13:41
Reply

Marsh Posté le 04-08-2003 à 21:13:08   

Reply

Marsh Posté le 04-08-2003 à 21:14:11    

c'est l'introduction/validation du concept de namespace (référenciel lexical) qui est porté par ce nouveau nommage. les namespace sont un outil très intéressant du C++

Reply

Marsh Posté le 04-08-2003 à 21:16:12    

sinon le using namespace on peut le faire juste apres les include avant le main c ca?

Reply

Marsh Posté le 04-08-2003 à 21:17:09    

oui. je t'invite à te documenter sur les directives using (et pour les namespaces, et pour les class types

Reply

Marsh Posté le 04-08-2003 à 21:21:40    

on trouve de tout avec google...
 
 
http://support.microsoft.com/defau [...] bContent=1

Reply

Marsh Posté le 04-08-2003 à 21:22:12    

Taz a écrit :

c'est l'introduction/validation du concept de namespace (référenciel lexical) qui est porté par ce nouveau nommage. les namespace sont un outil très intéressant du C++

pourquoi un simple "using" ne suffit pas alors ?
 
pour séparer "j'utilise le bordel qui est dans un namespace" de "je rentre dans le namespace" ?
 
Je capte pas, car #include <std> n'a pas de sens, pas plus que using namespace vector.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 04-08-2003 à 21:22:29    

c des king chez crosoft ya pas a dire
 
deja que jai parfois du mal en c++ alors si le compilo s'y met

Reply

Marsh Posté le 04-08-2003 à 21:23:22    

red faction a écrit :

c des king chez crosoft ya pas a dire
 
deja que jai parfois du mal en c++ alors si le compilo s'y met

des fois, c'est vraiment la faut du marteau

Reply

Marsh Posté le 04-08-2003 à 21:38:21    

nraynaud a écrit :

pourquoi un simple "using" ne suffit pas alors ?
 
pour séparer "j'utilise le bordel qui est dans un namespace" de "je rentre dans le namespace" ?
 
Je capte pas, car #include <std> n'a pas de sens, pas plus que using namespace vector.


 
"using namespace lambda;" c'est pour rendre accessible dans le scope local toutes les définitions du namespace lambda.
 
ça s'oppose à "using lambda::multi_proctor" qui sert à rendre accessible seulement la définition multi_proctor du namespace lambda.
 
Pour ma part, je pense que le "namespace" dans "using namespace" rends compte de cette différence de manière claire.


Message édité par schnapsmann le 04-08-2003 à 21:40:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed