C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Re: Tout mettre dans le class.h ?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Thierry
Guest





PostPosted: Wed Jun 23, 2004 10:05 am    Post subject: Re: Tout mettre dans le class.h ? Reply with quote



Bonjour,

Il est d'usage de separer declaration et implementation comme on le faisait
en C (.h et .c) pour des raisons fonctionnelles (modules, librairies) et
esthétiques.
Cependant il y avait un bug dans les versions precedentes de VC obligeant
les class "template" a être declarées et implementées dans le même fichier
..h. D'où peut-etre les claas que tu as vu.

Xpost+fu2 fclc++

Nicolas ROBERT a écrit :

Quote:
Bonjour,

J'ai remarqué que certains programmeurs, lorsqu'ils créaient une
classe en C++, déclaraient tout dans leur fichier class.h.
ex:

class.h:

class MaClass{
public:
//constructeur
MaClass();
//methode lambda
int methode();

....
};

MaClass:MaClass(){
....
}


int MaClass::methode(){
...
}
//****************
Ceci, au lieu de déclarer la class dans le fichier class.h et
d'alimenter les méthodes dans le fichier class.cpp.
Si j'y vois un avantage certains, à savoir l'utilisation d'un seul
fichier pour tout décrire, en revanche, ma faible expérience en C++ ne
me permet pas d'en voir
les inconvénients.
Est-ce possible de faire cela ou doit-on respecter rigoureusement le
contenu d'un fichier .h ?




--
« Always look at the bright side of the life... »

Back to top
Arnaud Debaene
Guest





PostPosted: Wed Jun 23, 2004 9:01 pm    Post subject: Re: Tout mettre dans le class.h ? Reply with quote



Thierry wrote:
Quote:
Cependant il y avait un bug dans les versions precedentes de VC
obligeant les class "template" a être declarées et implementées dans
le même fichier .h.

C'est toujours le cas actuellement, et ce n'est pas un 'bug" mais une
fonctionnalité non implémentée : le mot clé "export". A ma connaissance, un
seul compilateur l'implémente aujourd'hui : Comeau.

Arnaud



Back to top
Nomak
Guest





PostPosted: Thu Jun 24, 2004 10:32 am    Post subject: Re: Tout mettre dans le class.h ? Reply with quote



Le 23/06/2004 à 23:01:36, Arnaud Debaene <adebaene (AT) club-internet (DOT) fr> a
écrit:

Quote:
Cependant il y avait un bug dans les versions precedentes de VC
obligeant les class "template" a être declarées et implementées dans
le même fichier .h.

C'est toujours le cas actuellement, et ce n'est pas un 'bug" mais une
fonctionnalité non implémentée : le mot clé "export". A ma connaissance, un
seul compilateur l'implémente aujourd'hui : Comeau.

Obliger à mettre l'implémentation et la déclaration dans le même
fichier .h c'est un bug.

Obliger à avoir l'implémentation (.hxx) avec la déclaration (.hh) pour
chaque unité de compilation (.cc), ça c'est ne pas gérer "export".

--
Nomak

Back to top
Arnaud Debaene
Guest





PostPosted: Thu Jun 24, 2004 3:10 pm    Post subject: Re: Tout mettre dans le class.h ? Reply with quote

Nomak <no.email (AT) invalid (DOT) domain.fr> wrote


Quote:
Obliger à mettre l'implémentation et la déclaration dans le même
fichier .h c'est un bug.

Obliger à avoir l'implémentation (.hxx) avec la déclaration (.hh) pour
chaque unité de compilation (.cc), ça c'est ne pas gérer "export".

Heuuu... j'ai rien compris là Wink Tu pourrais préciser un peu ce que
tu veux dire exactement?

Tu parles de la solution où l'implémenation de la classe template est
dans un point .inl (ou.hxx où ce que tu veux) qui est #inclus à la fin
du header de la classe template, c'est cà?

Arnaud

Back to top
Nomak
Guest





PostPosted: Thu Jun 24, 2004 3:36 pm    Post subject: Re: Tout mettre dans le class.h ? Reply with quote

Le 24/06/2004 à 17:10:50, Arnaud Debaene <adebaene (AT) club-internet (DOT) fr> a
écrit:

Quote:
Nomak <no.email (AT) invalid (DOT) domain.fr> wrote


Obliger à mettre l'implémentation et la déclaration dans le même
fichier .h c'est un bug.

Obliger à avoir l'implémentation (.hxx) avec la déclaration (.hh) pour
chaque unité de compilation (.cc), ça c'est ne pas gérer "export".

Heuuu... j'ai rien compris là Wink Tu pourrais préciser un peu ce que
tu veux dire exactement?

Tu parles de la solution où l'implémenation de la classe template est
dans un point .inl (ou.hxx où ce que tu veux) qui est #inclus à la fin
du header de la classe template, c'est cà?

oui

quand tu lance la compilation sur un fichier (ex: main.cc), la sortie
du préprocesseur de main.cc doit avoir toutes les implémentations des
"template"s déclarés (et utilisés?). Cette restriction vient du
"non-support" de export.

Mais c'est pas forcément dans le même fichier physique, sinon c'est un
bug.

--
Nomak

Back to top
Arnaud Debaene
Guest





PostPosted: Thu Jun 24, 2004 5:15 pm    Post subject: Re: Tout mettre dans le class.h ? Reply with quote

Nomak wrote:
Quote:
Le 24/06/2004 à 17:10:50, Arnaud Debaene <adebaene (AT) club-internet (DOT) fr> a
écrit:

Nomak <no.email (AT) invalid (DOT) domain.fr> wrote in message
news:<6pd0qudvts44.a4yjb7e2y15b.dlg (AT) 40tude (DOT) net>...

Obliger à mettre l'implémentation et la déclaration dans le même
fichier .h c'est un bug.

Obliger à avoir l'implémentation (.hxx) avec la déclaration (.hh)
pour
chaque unité de compilation (.cc), ça c'est ne pas gérer "export".

Heuuu... j'ai rien compris là Wink Tu pourrais préciser un peu ce que
tu veux dire exactement?

Tu parles de la solution où l'implémenation de la classe template est
dans un point .inl (ou.hxx où ce que tu veux) qui est #inclus à la
fin
du header de la classe template, c'est cà?

oui

quand tu lance la compilation sur un fichier (ex: main.cc), la sortie
du préprocesseur de main.cc doit avoir toutes les implémentations des
"template"s déclarés (et utilisés?). Cette restriction vient du
"non-support" de export.

Mais c'est pas forcément dans le même fichier physique, sinon c'est un
bug.

On est bien d'accord, mais VC support depuis belle lurette le mécanisme
d'#inclure l'implémentation à la fin d'un header (je pense qu'il l'a
toujours supporté d'ailleurs), donc je ne vois pas trop où tu veux en venir.

Arnaud



Back to top
Nomak
Guest





PostPosted: Thu Jun 24, 2004 6:04 pm    Post subject: Re: Tout mettre dans le class.h ? Reply with quote

Le 24/06/2004 à 19:15:16, Arnaud Debaene <adebaene (AT) club-internet (DOT) fr> a
écrit:


Quote:
On est bien d'accord, mais VC support depuis belle lurette le mécanisme
d'#inclure l'implémentation à la fin d'un header (je pense qu'il l'a
toujours supporté d'ailleurs), donc je ne vois pas trop où tu veux en venir.

Rappel:

Quote:
Cependant il y avait un bug dans les versions precedentes de VC
obligeant les class "template" a être declarées et implementées dans
le même fichier .h.

C'est toujours le cas actuellement, et ce n'est pas un 'bug" mais une
fonctionnalité non implémentée : le mot clé "export". A ma connaissance, un
seul compilateur l'implémente aujourd'hui : Comeau.

Si ce qu'a dit Thierry est vrai, c'est bien un bug, et ça n'a rien à
voir avec export.

--
Nomak

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.