Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1388 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  namespace et include

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

namespace et include

n°775454
jm1981
- - - - - - - - - - - - - - -
Posté le 24-06-2004 à 11:19:40  profilanswer
 

Salut,
 
je me demande si on ne peut pas utiliser les namespace pour se passer des #include "***/h"
 
si 2 classes qui ont besoin l'une de l'autre et ki incluent mutuellement leurs .h, en les mettant dans un meme namespace on pourrait se passer des #include, nan?


---------------
Lexi lin gua @ traducteurs FR DE ES IT GB
mood
Publicité
Posté le 24-06-2004 à 11:19:40  profilanswer
 

n°775469
Joel F
Real men use unique_ptr
Posté le 24-06-2004 à 11:26:42  profilanswer
 

namespace et include repondent à deux besoins différents :
 
1/ les directives include permettent de séparer PHYSIQUEMENT (dans des fichiers différents) des déclarations
 
2/ les namespaces permettent de séparer LOGIQUEMENT (dans un même fichier) des déclarations.
 
Grosso modo, un include recopie le contenu textuel d'un fichier dans un autre avant de le compiler, ce qui est différent de l'action du namespace qui est de valider ou d'invalider des droits d'accés.

n°775491
jm1981
- - - - - - - - - - - - - - -
Posté le 24-06-2004 à 11:37:40  profilanswer
 

j'ai des merdes avec des includes et je me demandais comment me passer des includes


---------------
Lexi lin gua @ traducteurs FR DE ES IT GB
n°775495
skeye
Posté le 24-06-2004 à 11:39:38  profilanswer
 

jm1981 a écrit :

j'ai des merdes avec des includes  


cad?


---------------
Can't buy what I want because it's free -
n°775509
Taz
bisounours-codeur
Posté le 24-06-2004 à 11:43:18  profilanswer
 

jm1981 a écrit :

j'ai des merdes avec des includes et je me demandais comment me passer des includes

g++ -E fichier.cpp | less

n°775567
jm1981
- - - - - - - - - - - - - - -
Posté le 24-06-2004 à 12:23:10  profilanswer
 

en fait, selon l'ordre des includes, la compilation marche ou non
 
et pour un cas précis, si j'inclue un des .h, ça n compile plus du tout


---------------
Lexi lin gua @ traducteurs FR DE ES IT GB
n°775589
Taz
bisounours-codeur
Posté le 24-06-2004 à 12:50:04  profilanswer
 

oh putain ...

n°775593
jm1981
- - - - - - - - - - - - - - -
Posté le 24-06-2004 à 12:52:38  profilanswer
 

j'ai une architecture de classe arborescente et si je place tous les includes au sommet de l'arborescence et que chaque classe inclue le .h de la classe au sommet de l'arborescence, ça chie grave dans la colle [:meganne]


---------------
Lexi lin gua @ traducteurs FR DE ES IT GB
n°775595
Taz
bisounours-codeur
Posté le 24-06-2004 à 12:53:34  profilanswer
 

c'est que tes .h sont mités

n°775598
skeye
Posté le 24-06-2004 à 12:55:35  profilanswer
 

manquerait pas des  
#ifndef
#define
#endif
par hasard?:whistle:


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 24-06-2004 à 12:55:35  profilanswer
 

n°775622
jm1981
- - - - - - - - - - - - - - -
Posté le 24-06-2004 à 13:14:19  profilanswer
 

nan, j'ai bien les  
 
#ifndef  
#define  
#endif
 
d'aileurs ils sont générés automatiquement par Eclipse :D
 
je crois que j'ai des cycles en fait, il va falloir que je mette des includes dans mes cpp


---------------
Lexi lin gua @ traducteurs FR DE ES IT GB
n°775641
Taz
bisounours-codeur
Posté le 24-06-2004 à 13:26:23  profilanswer
 

mais il ne faut mettre de #include que lorsqu'il y en a besoin. si tu inclues tout un tas de truc dans un .h mais qui lui sont inutiles, là tu prends des risques

n°853971
djfx
Vive la biere !
Posté le 20-09-2004 à 11:36:04  profilanswer
 

Salut a tous,  
je profite de ce poste pr poser une question.
Je viens du JAVA, et je me met au C++.
 
Donc je commence tranquil par les petit truc de base, vient les classes, et la ca merdouille. Je suis 1 exemple, classe Personne.
Je fait Personne.h, avec les declaration, et #include <string> pour declarer le nom et prenom en string, et quand je rappel cette classe dans Personne.cpp #include "Personne.h", il me sort un tas de truc genre : 'string' is used as a type, but is  not defined as a type
et impossible de compiler, g oublié des truc ?? certainement, mais quoi ??
 
Les fichiers sont visible ici : http://www.djfx.fr.st/www/cpp
Merci.  :hello:


---------------
Pas oublier les glacons pour l'apero !!
n°854008
burgergold
5$? va chez l'diable!
Posté le 20-09-2004 à 12:23:11  profilanswer
 

tiens j'ai un peu le même problème
 
j'ai une classe Segment, une classe Point et mon programme principal
 
dans le segment, j'inclus mon point.h, m'ai j'en ai également besoin dans mon programme principal (en dehors du contexte de segment)
 
alors je l'inclus pas et ca fonctionne, mais d'un autre coté la logique serait qu'il soit inclus dans les 2 non?

n°854010
chrisbk
-
Posté le 20-09-2004 à 12:28:56  profilanswer
 

djfx a écrit :

Salut a tous,  
je profite de ce poste pr poser une question.
Je viens du JAVA, et je me met au C++.
 
Donc je commence tranquil par les petit truc de base, vient les classes, et la ca merdouille. Je suis 1 exemple, classe Personne.
Je fait Personne.h, avec les declaration, et #include <string> pour declarer le nom et prenom en string, et quand je rappel cette classe dans Personne.cpp #include "Personne.h", il me sort un tas de truc genre : 'string' is used as a type, but is  not defined as a type
et impossible de compiler, g oublié des truc ?? certainement, mais quoi ??
 
Les fichiers sont visible ici : http://www.djfx.fr.st/www/cpp
Merci.  :hello:


 
 
string se trouve dans le namespace std
Donc soit tu donnes le nom complet de string, qui est std::string, soit tu fais un using namespace std; (qui dira au compila d'aller chercher tout seul dans std::*), au choix.
 
Sinon, bon tu viens du monde java, donc attention a deux trois trucs :
 

Code :
  1. Personne(string lenom, string leprenom, string lannee);


 
Quand tu balances un string comme ca en parametre, le compilo va faire une copie du string (la tu as fait un passage par valeur), qui te prends du tps cpu et un brin de ram pour *strictement* rien. Dans ton cas, un bon entete serait plutot :

Code :
  1. Personne(const std::string &lenom, const std::string &leprenom, const std::string &lannee);


 
(on passe une reference sur le string sans faire de copie, et on met le const pour bien crier au monde entier qu'on ne le modifiera pas)
 
(d'un ot coté, vu que tu debutes, vazy mollo avec les refs & cie, ca peut devenir un sac d'embrouilles :D)  


Message édité par chrisbk le 20-09-2004 à 12:30:08

---------------
NP: HTTP Error 764 Stupid coder found
n°854139
djfx
Vive la biere !
Posté le 20-09-2004 à 15:09:02  profilanswer
 

Ok merci !
Arf ! Ca marche toujours pas  :??: , maintenant g :  
Exo\Classes\Personne.cpp passing `const std::string' as  `this' argument of `std::basic_string<_CharT, _Traits, _Alloc>&  
 
http://www.djfx.fr.st/www/cpp


---------------
Pas oublier les glacons pour l'apero !!
n°854143
Taz
bisounours-codeur
Posté le 20-09-2004 à 15:14:18  profilanswer
 

bon quelqu'un lui explique l'initialisation des membres
 
moi je souligne sur que strstream n'existe pas.
<sstream> -> istringstream
 
et tu crois faire quoi là 'istrstream(lannee.data()) >> annee;'  avec ton .data ? istringstream(lannee) >> annee;


Message édité par Taz le 20-09-2004 à 15:15:27
n°854145
chrisbk
-
Posté le 20-09-2004 à 15:15:37  profilanswer
 

djfx a écrit :

Ok merci !
Arf ! Ca marche toujours pas  :??: , maintenant g :  
Exo\Classes\Personne.cpp passing `const std::string' as  `this' argument of `std::basic_string<_CharT, _Traits, _Alloc>&  
 
http://www.djfx.fr.st/www/cpp


 
:D
 

Code :
  1. using namespace std;
  2. Personne::Personne(const std::string &lenom,


 
normalement, si tu fais 'using namespace std' c'est pour te passer du std:: devant le string :o (c'est pas une erreur en soit, mais c'est un peu balot)
 
 
Ensuite ton erreur vient de la :
 

Code :
  1. private:
  2.         const std::string nom;
  3.         const std::string prenom;


 
Ici, pourquoi avoir mis const ? A partir du moment ou tu mets const, tu interdit toute modification a cet objet, hors ton :
 

Code :
  1. nom = lenom;
  2.     prenom = leprenom;


 
va justement tenter de modifier cet objet (et le compilo te jete)
 
deux solutions
 
1/ tu vire le const (mais juste au niveau de la def des variable membre, hein, elle ne sont de toute facon pas accessible depuis l'exterieur, donc c'est pas grave)
 
2/tu utilises la liste d'initialiseur, que tu avais fais avant justement
 
 

Code :
  1. Personne::Personne(const std::string &lenom, const std::string &leprenom, const std::string &lannee) : nom(lenom), prenom(leprenom)
  2. {
  3. ..
  4. }


 
 
mon avis : la solution 1


---------------
NP: HTTP Error 764 Stupid coder found
n°854146
Taz
bisounours-codeur
Posté le 20-09-2004 à 15:16:50  profilanswer
 

mon avis : la 2.
 
c'est moi ou y a vraiment un p minuscule apres le 2 ?

n°854150
chrisbk
-
Posté le 20-09-2004 à 15:18:36  profilanswer
 

Taz a écrit :


c'est moi ou y a vraiment un p minuscule apres le 2 ?


gni ?


---------------
NP: HTTP Error 764 Stupid coder found
n°854151
Taz
bisounours-codeur
Posté le 20-09-2004 à 15:19:10  profilanswer
 

Personne::personne
 
c'est un bug du truc (comme quand on ::d ?)


Message édité par Taz le 20-09-2004 à 15:19:24
n°854152
chrisbk
-
Posté le 20-09-2004 à 15:19:20  profilanswer
 

ah ouais, encore une jocerie a la con


---------------
NP: HTTP Error 764 Stupid coder found
n°854172
djfx
Vive la biere !
Posté le 20-09-2004 à 15:49:37  profilanswer
 

Super, ca avance ptit a ptit, j'ai pris la solution 1.  :hello:  
Maintenant, c'est la conversion string en int qui coince.
J'ai essayé different truc, trouvé la : http://www.forum.moteurprog.com/in [...] topic=3640
 
Exo\Classes\Personne.cpp cannot convert `const  std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `
 
mais rien y fait, et si je le test, en faisant direct annee=190, par exemple, a la compil il me sort :  [Linker error] undefined reference to `WinMain@16'
 
Ah oui, une adresse ou on peut avoir le detail des classes ? Les methodes, .... un peu comme en JAVA !  :)


Message édité par djfx le 20-09-2004 à 15:51:34

---------------
Pas oublier les glacons pour l'apero !!
n°854180
_darkalt3_
Proctopathe
Posté le 20-09-2004 à 16:00:43  profilanswer
 

http://cplusplus.com/
 
(bibliolink powered http://forum.hardware.fr/hardwaref [...] _sujet.htm )


Message édité par _darkalt3_ le 20-09-2004 à 16:01:51
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  namespace et include

 

Sujets relatifs
[PHP] session + include = problemerequire et include
double include[C++ Builder 6]Changer chemin des include
fichier à include qui ne marche pas[PHP] un "include" ne trouve pas mon fichier
includeInclude
php include et Mozilla ....[debutant] Probleme avec include iostream sous VC++
Plus de sujets relatifs à : namespace et include


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR