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: Comment faire une bibliothèque ?

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





PostPosted: Fri Jun 27, 2003 9:43 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote






"YaNn" <yann.prosper (AT) wanadoo (DOT) fr> a écrit dans le message de news:
bdfg1d$32a$1 (AT) news-reader1 (DOT) wanadoo.fr...
Quote:
bonjour,

j'aimerai me faire une bibliothèque pour pouvoir initialiser
ma fenêtre OpenGL avec SDL sans avoir a passer par un code de genre:

MaClasse m;

m.initialise();

mais plutot directement initialise() tout en gardant les paramètres
dans des variables.

Dois-je vraiment passer par du C ou est-ce possible en C++ ?

Merci d'avance pour toute idée :)

Je comprend rien mais ce qui est certain, c'est que ce qui est possible en C

l'est en C++.
Enfin à partir du moment ou ton compilateur supporte C et C++, tu peux
mélanger les deux.

Donc, normalement la réponse à ta question est "oui".

--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.os.ms-windows.programmation
fr.comp.graphisme.programmation



Back to top
amerio
Guest





PostPosted: Fri Jun 27, 2003 10:19 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote



Quote:
En fait mon but est d'écrire une bibliothèque genre GLUT pour
l'initialisation d'un fenetre graphique et la gestion des evenements
claviers/Souris etc.... avec des pointeurs sur fonction. On enregistre
la fonction dont on va se servir pour afficher par exemple, et après on
lance la boucle principale de la bibliothèque qui se charge du reste :)

J'ai déjà pensé la faire sous forme d'objet, mais je n'aime pas le fait
de devoir l'instancié pour m'en servir. En gros cela serai une sorte de
module capable de gérer les différents paramètres et offrant quelques
fonctionnalités sympas. Le tout en encapsulant du SDL Smile

Tu peux utiliser une classe dont tous les membres et methodes sont
statiques.
Les membres statiques seront instanciés 'derriere ton dos' par le compilo,
avant de rentrer dans main.

dans le .h :
class GL
{
public :
static bool Init();
private:
static bool m_bInit;
};


dans le .cpp :
bool GL::m_bInit = false; // en dehors de toute methode
bool GL::Init() { m_bInit=true;}

dans ton code:
if (GL::Init())
{
....
}

Mais si tu veux faire if (Init()) ... alors c'est du C, pas du C++ (donc tu
ecris pas de classe)
Cela dis, je prefere les singleton aux classes statiques (au moins tu
controles le moment de la construction et de la destruction)



Back to top
YaNn
Guest





PostPosted: Fri Jun 27, 2003 2:11 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote



amerio wrote:
Quote:
En fait mon but est d'écrire une bibliothèque genre GLUT pour
l'initialisation d'un fenetre graphique et la gestion des evenements
claviers/Souris etc.... avec des pointeurs sur fonction. On enregistre
la fonction dont on va se servir pour afficher par exemple, et après on
lance la boucle principale de la bibliothèque qui se charge du reste :)

J'ai déjà pensé la faire sous forme d'objet, mais je n'aime pas le fait
de devoir l'instancié pour m'en servir. En gros cela serai une sorte de
module capable de gérer les différents paramètres et offrant quelques
fonctionnalités sympas. Le tout en encapsulant du SDL :)


Tu peux utiliser une classe dont tous les membres et methodes sont
statiques.
Les membres statiques seront instanciés 'derriere ton dos' par le compilo,
avant de rentrer dans main.

dans le .h :
class GL
{
public :
static bool Init();
private:
static bool m_bInit;
};


dans le .cpp :
bool GL::m_bInit = false; // en dehors de toute methode
bool GL::Init() { m_bInit=true;}

dans ton code:
if (GL::Init())
{
....
}

Mais si tu veux faire if (Init()) ... alors c'est du C, pas du C++ (donc tu
ecris pas de classe)
Cela dis, je prefere les singleton aux classes statiques (au moins tu
controles le moment de la construction et de la destruction)


C'est exactement ce que je voulais savoir, merci Smile


Pour l'instant j'ai résolu le problème en écrivant en C, mais je pense
que je vais le faire avec la classe statique.

Par contre tu parles des singletons, qu'est ce que c'est ?


Back to top
amerio
Guest





PostPosted: Fri Jun 27, 2003 2:41 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

Quote:
Pour l'instant j'ai résolu le problème en écrivant en C, mais je pense
que je vais le faire avec la classe statique.

Par contre tu parles des singletons, qu'est ce que c'est ?

Un singleton est une classe qui ne peut avoir qu'une seule instance.
Ce n'est pas une classe statique car elle est instanciée 'à la main' ou lors
de sa 1ere utilisation.
Si on ne sent sert pas, elle n'est donc *jamais* instanciée
Typiquement :

class Singleton
{
public:
static Singleton* GetInstance() { return s_pThis ? s_pThis :
s_pThis = new Singleton; }
~Singleton(); // le destructeur est public!
void DoWork() {....}
static void DeleteMe() { if (s_pThis) delete
s_pThis; s_pThis = NULL;}
private:
Singleton() {} // le constructeur est privé!
static Singleton* s_pThis; // ne pas oublier d'ajouter dans le
..cpp : Singleton* Singleton::s_pThis = NULL;
};

Pour l'utiliser :
Singleton::GetInstance()->DoWork();
Et a la fin de ton prog : Singleton::DeleteMe();
pour alleger l'ecriture tu peux faire
#define TheSingleton (Singleton::GetInstance())
et taper :
TheSingleton->DoWork();



Back to top
YaNn
Guest





PostPosted: Fri Jun 27, 2003 3:34 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote


C'est bizarre on ne nous apprend pas ca à l'école :)

On préfère nous gaver et nous faire haïr le C++ en nous bourrant
de surcharge d'opérateur, d'héritage et de STL sans nous expliquer
comment nous en servir.

amerio wrote:

Quote:
Pour l'instant j'ai résolu le problème en écrivant en C, mais je pense
que je vais le faire avec la classe statique.

Par contre tu parles des singletons, qu'est ce que c'est ?


Un singleton est une classe qui ne peut avoir qu'une seule instance.
Ce n'est pas une classe statique car elle est instanciée 'à la main' ou lors
de sa 1ere utilisation.
Si on ne sent sert pas, elle n'est donc *jamais* instanciée
Typiquement :

class Singleton
{
public:
static Singleton* GetInstance() { return s_pThis ? s_pThis :
s_pThis = new Singleton; }
~Singleton(); // le destructeur est public!
void DoWork() {....}
static void DeleteMe() { if (s_pThis) delete
s_pThis; s_pThis = NULL;}
private:
Singleton() {} // le constructeur est privé!
static Singleton* s_pThis; // ne pas oublier d'ajouter dans le
..cpp : Singleton* Singleton::s_pThis = NULL;
};

Pour l'utiliser :
Singleton::GetInstance()->DoWork();
Et a la fin de ton prog : Singleton::DeleteMe();
pour alleger l'ecriture tu peux faire
#define TheSingleton (Singleton::GetInstance())
et taper :
TheSingleton->DoWork();




Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Mon Jun 30, 2003 8:12 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

YaNn <yann.prosper (AT) wanadoo (DOT) fr> wrote


Quote:
C'est bizarre on ne nous apprend pas ca à l'école Smile

En effet. C'est une modèle de conception très répandu. Et les modèles de
conception, c'est devenu une partie du b a ba de la conception. Une
connaissance en est essentielle aussi pour trouver du travail -- depuis
au moins six ou sept ans, on m'en a questionné dans tous les entrevues
d'embauche.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, Tél. : +33 (0)1 30 23 45 16

Back to top
Vivien Gallinaro
Guest





PostPosted: Mon Jun 30, 2003 5:27 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

J'arrive un peu tard, désolé ;)

YaNn wrote:
Quote:
amerio wrote:

Tu peux utiliser une classe dont tous les membres et methodes sont
statiques.
Les membres statiques seront instanciés 'derriere ton dos' par le
compilo, avant de rentrer dans main.

C'est goret, quand même ! Personnellement (à l'école justement ;-P ), on
m'a appris qu'une classe dont tous les membres sont statiques, c'est un
namespace.

Quote:
Cela dis, je prefere les singleton aux classes statiques (au moins tu
controles le moment de la construction et de la destruction)

Dans ce cas là, effectivement, c'est différent. Cela dit, je n'ai qu'à
peine entendu parler des design patterns, et je me méprenais
complètement sur ce que ça pouvait être. Quand je vois ce petit exemple,
j'ai juste envie de demander si quelqu'un n'aurait pas une petite url
sur le sujet ;)

Vivien Gallinaro


Back to top
Laurent Oget
Guest





PostPosted: Mon Jun 30, 2003 5:41 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote


Vivien Gallinaro <gallinar_PLONK_ (AT) mark (DOT) u-strasbg.fr> writes:
Quote:
J'arrive un peu tard, désolé ;)

YaNn wrote:
amerio wrote:

Tu peux utiliser une classe dont tous les membres et methodes sont
statiques.
Les membres statiques seront instanciés 'derriere ton dos' par le
compilo, avant de rentrer dans main.

C'est goret, quand même ! Personnellement (à l'école justement ;-P ), on
m'a appris qu'une classe dont tous les membres sont statiques, c'est un
namespace.

Cela dis, je prefere les singleton aux classes statiques (au moins tu
controles le moment de la construction et de la destruction)

Dans ce cas là, effectivement, c'est différent. Cela dit, je n'ai qu'à
peine entendu parler des design patterns, et je me méprenais
complètement sur ce que ça pouvait être. Quand je vois ce petit exemple,
j'ai juste envie de demander si quelqu'un n'aurait pas une petite url
sur le sujet ;)

Vivien Gallinaro


a ma connaissance, pour le moment la reference pour les design patterns
est le livre du 'gang of four'.

http://www.bookpool.com/.x/7zxeo44zs1/sm/0201633612


j'en ai meme trouve une version en francais.

http://tinyurl.com/fnik



--
Laurent Oget, Ph.D. [email]laurent (AT) oget (DOT) net[/email] http://oget.net
Senior Engineer Zvolve Systems Inc http://zvolve.com
Chercheur Associé Liafa http://liafa.jussieu.fr

Back to top
amerio
Guest





PostPosted: Mon Jun 30, 2003 9:05 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

Quote:
Tu peux utiliser une classe dont tous les membres et methodes sont
statiques.
Les membres statiques seront instanciés 'derriere ton dos' par le
compilo, avant de rentrer dans main.

C'est goret, quand même ! Personnellement (à l'école justement ;-P ), on
m'a appris qu'une classe dont tous les membres sont statiques, c'est un
namespace.

Pas tout a fait semblable. Un namespace est ouvert (on peut rajouter des
classes, des types,...) alors qu'une classe est fermée (après sa définition,
on ne peut rien rajouter).
Quant à dire que c'est "goret", c'est quand même utilisé dans bcp de lib,
notamment dès qu'il s'agit de faire une passerelle vers des lib C (pour
utiliser le fait qu'un callback C peut s'ecrire sous la forme d'une méthode
statique).
On se retrouve alors avec des classes mi-statiques, mi-classique : on a la
notion de "contexte" courant (la partie statique gérant le contexte courant,
les instances de la classes gérant les différents contextes).



Back to top
Christophe Lephay
Guest





PostPosted: Mon Jun 30, 2003 9:43 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

"News Coil" <vkosse (AT) wanadoo (DOT) Fr> a écrit dans le message de
news:bdq8tv$nbk$1 (AT) news-reader1 (DOT) wanadoo.fr...
Quote:
SI tu es sous windows, fais juste une dll ou bien sous linux kdevelop le
fait très bien.

"amerio" <amerio (AT) hotmail (DOT) com> a écrit dans le message de news:
Quant à dire que c'est "goret", c'est quand même utilisé dans bcp de
lib,
notamment dès qu'il s'agit de faire une passerelle vers des lib C (pour
utiliser le fait qu'un callback C peut s'ecrire sous la forme d'une
méthode
statique).
On se retrouve alors avec des classes mi-statiques, mi-classique : on a
la
notion de "contexte" courant (la partie statique gérant le contexte
courant,
les instances de la classes gérant les différents contextes).

Pourrais-tu préciser ce qu'une dll ou kdevelop fait très bien, stp ?

Chris



Back to top
Jean-Marc Bourguet
Guest





PostPosted: Tue Jul 01, 2003 7:54 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

"amerio" <amerio (AT) hotmail (DOT) com> writes:

Quote:
Quant à dire que c'est "goret", c'est quand même utilisé dans bcp de
lib, notamment dès qu'il s'agit de faire une passerelle vers des lib
C (pour utiliser le fait qu'un callback C peut s'ecrire sous la
forme d'une méthode statique).

C'etait une pratique courante et c'est un extension commune mais c'est
pas autorise par la norme.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Jul 01, 2003 7:54 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

Arnaud Meurgues <arnaud (AT) meurgues (DOT) non.fr.invalid> wrote

Quote:
kanze (AT) gabi-soft (DOT) fr wrote:

C'est bizarre on ne nous apprend pas ca à l'école Smile En effet. C'est
une modèle de conception très répandu. Et les modèles de conception,
c'est devenu une partie du b a ba de la conception. Une connaissance
en est essentielle aussi pour trouver du travail -- depuis au moins
six ou sept ans, on m'en a questionné dans tous les entrevues
d'embauche.

Mais tu n'es pas, et de loin, un jeune qui sort de l'école. On peut
supposer que tes entretiens d'embauche sont proportionnés aux
compétences que tu revendiquent.

Certainement, mais la différence est plutôt une question de profondeur,
et non d'étendue. À un débutant, on lui démandera ce qu'il entend par
« modèle de conception », et d'en citer les noms de deux ou trois. À
moi, on démandera une discussion détailée des alternatifs (mettons entre
le modèle template et la délégation), avec des pros et des contres de
chacun, ou on me soumettra un problème dont la solution utilise certains
modèles de conception.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, Tél. : +33 (0)1 30 23 45 16

Back to top
Arnaud Meurgues
Guest





PostPosted: Tue Jul 01, 2003 8:38 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

Laurent Oget wrote:

Quote:
a ma connaissance, pour le moment la reference pour les design patterns
est le livre du 'gang of four'.
j'en ai meme trouve une version en francais.

La traduction est franchement mauvaise. À n'utiliser que si l'on ne peut
pas lire l'anglais.

Arnaud


Back to top
Jean-Marc Bourguet
Guest





PostPosted: Tue Jul 01, 2003 9:53 am    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

"amerio" <amerio (AT) hotmail (DOT) com> writes:

Quote:
Quant à dire que c'est "goret", c'est quand même utilisé dans bcp de
lib, notamment dès qu'il s'agit de faire une passerelle vers des lib
C (pour utiliser le fait qu'un callback C peut s'ecrire sous la
forme d'une méthode statique).

C'etait une pratique courante et c'est un extension commune mais c'est
pas autorise par la norme.

Tu es sur de toi ? Ref stp.

7.5 naturellement. Et plus precisement 7.5/1 (...Two functions type
with different language linkages are distinct types...), 7.5/4 (...A
C language linkage is ignored for the class members and the member
function...).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Jul 01, 2003 2:53 pm    Post subject: Re: Comment faire une bibliothèque ? Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> wrote

Quote:
"amerio" <amerio (AT) hotmail (DOT) com> writes:

Quant à dire que c'est "goret", c'est quand même utilisé dans
bcp de lib, notamment dès qu'il s'agit de faire une passerelle
vers des lib C (pour utiliser le fait qu'un callback C peut
s'ecrire sous la forme d'une méthode statique).

C'etait une pratique courante et c'est un extension commune mais
c'est pas autorise par la norme.

Tu es sur de toi ? Ref stp.

7.5 naturellement. Et plus precisement 7.5/1 (...Two functions type
with different language linkages are distinct types...), 7.5/4 (...A
C language linkage is ignored for the class members and the member
function...).

À ajouter : je me suis déjà servi des compilateurs où les conventions de
passage de paramètres n'étaient pas les même en C et en C++.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, Tél. : +33 (0)1 30 23 45 16

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.