dans un logiciel que je développe, j'ai défini un type 'boolean' dans un
namespace à moi. Dans l'ensemble de mes .h j'écris toujours l'ensemble
des namespaces nécessaires pour qualifier un type, mais dans les .cpp,
j'utilise un 'using namespace AMoi'. Le problème est que windows définit
lui aussi le type 'boolean' dans ses headers. Je pourrais qualifier
explicitement mon tous les 'boolean' de mon .cpp moi même mais cela
surchargerait pas mal. Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté. Est ce que quelque
chose de ce genre existe ?
A+
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)
Il me semble avoir vu quelque part une syntaxe du type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de "using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait aussi bien pu utiliser un autre mot-clé) : il permet de "recopier" explicitement une déclaration d'une classe de base dans une classe dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut changer de nom. Le nom "boolean" ne convient pas ; le nom "AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
On Wed, 30 Aug 2006 10:44:57 +0200, Yann Renard :
Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de
"using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de
l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait
aussi bien pu utiliser un autre mot-clé) : il permet de "recopier"
explicitement une déclaration d'une classe de base dans une classe
dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut
changer de nom. Le nom "boolean" ne convient pas ; le nom
"AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut
donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en
français (surtout si le nom du namespace est en français) : tu as peu
de risque de trouver un nom "booleen" dans les headers de Windows...
Il me semble avoir vu quelque part une syntaxe du type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de "using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait aussi bien pu utiliser un autre mot-clé) : il permet de "recopier" explicitement une déclaration d'une classe de base dans une classe dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut changer de nom. Le nom "boolean" ne convient pas ; le nom "AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
Yann Renard
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 10:44:57 +0200, Yann Renard :
Il me semble avoir vu quelque part une syntaxe du type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de "using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait aussi bien pu utiliser un autre mot-clé) : il permet de "recopier" explicitement une déclaration d'une classe de base dans une classe dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut changer de nom. Le nom "boolean" ne convient pas ; le nom "AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas des plus adapté, meme s'il y a peu de chances que windows ai les memes :) Je considérerais cela comme de l'offuscation. De plus, le logiciel produit doit être distribué en OpenSource, ce qui encourage l'usage de l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je suis quand même obligé de prendre un nom de type différent...
Yann -- Yann Renard - To send me an email, remove no-spam sectionS :)
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 10:44:57 +0200, Yann Renard :
Il me semble avoir vu quelque part une syntaxe du
type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de
"using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de
l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait
aussi bien pu utiliser un autre mot-clé) : il permet de "recopier"
explicitement une déclaration d'une classe de base dans une classe
dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut
changer de nom. Le nom "boolean" ne convient pas ; le nom
"AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut
donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en
français (surtout si le nom du namespace est en français) : tu as peu
de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas
des plus adapté, meme s'il y a peu de chances que windows ai les memes
:) Je considérerais cela comme de l'offuscation. De plus, le logiciel
produit doit être distribué en OpenSource, ce qui encourage l'usage de
l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je
suis quand même obligé de prendre un nom de type différent...
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)
Il me semble avoir vu quelque part une syntaxe du type 'using AMoi::MonType' pour lever l'ambiguïté.
En l'occurence, ça ne lèvera rien du tout. C'est juste l'équivalent de "using namespace AMoi", sauf que ça ne concerne qu'un type au lieu de l'ensemble des types définis dans le namespace.
Il y a un autre usage de using, qui n'a rien à voir (et qui aurait aussi bien pu utiliser un autre mot-clé) : il permet de "recopier" explicitement une déclaration d'une classe de base dans une classe dérivée.
Pour ton problème, il n'y a pas beaucoup de solutions : il faut changer de nom. Le nom "boolean" ne convient pas ; le nom "AMoi::boolean" convient dans l'absolu mais ne te plait pas ; il faut donc en trouver un autre, puis le déclarer par typedef :
typedef AMoi::boolean MonBool.
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas des plus adapté, meme s'il y a peu de chances que windows ai les memes :) Je considérerais cela comme de l'offuscation. De plus, le logiciel produit doit être distribué en OpenSource, ce qui encourage l'usage de l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je suis quand même obligé de prendre un nom de type différent...
Yann -- Yann Renard - To send me an email, remove no-spam sectionS :)
Michel Decima
Fabien LE LEZ wrote:
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas des plus adapté, meme s'il y a peu de chances que windows ai les memes :) Je considérerais cela comme de l'offuscation. De plus, le logiciel produit doit être distribué en OpenSource, ce qui encourage l'usage de l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je suis quand même obligé de prendre un nom de type différent...
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Fabien LE LEZ wrote:
C'est d'ailleurs une bonne raison pour choisir des identifiants en
français (surtout si le nom du namespace est en français) : tu as peu
de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas
des plus adapté, meme s'il y a peu de chances que windows ai les memes
:) Je considérerais cela comme de l'offuscation. De plus, le logiciel
produit doit être distribué en OpenSource, ce qui encourage l'usage de
l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je
suis quand même obligé de prendre un nom de type différent...
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
C'est d'ailleurs une bonne raison pour choisir des identifiants en français (surtout si le nom du namespace est en français) : tu as peu de risque de trouver un nom "booleen" dans les headers de Windows...
Mettre des noms de type / quoique ce soit en français ne me semble pas des plus adapté, meme s'il y a peu de chances que windows ai les memes :) Je considérerais cela comme de l'offuscation. De plus, le logiciel produit doit être distribué en OpenSource, ce qui encourage l'usage de l'anglais.
Bref, quoi qu'il en soit, l'idée du typedef me plait bien, même si je suis quand même obligé de prendre un nom de type différent...
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Fabien LE LEZ
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima
<michel.decima@orange-ft.com>:
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours.
Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme
bool (et est convertible en un bool), mais dont l'argument template
sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
Yann Renard
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
bool machin=true; // ;)
Bref, je sais que bool est a priori défini dans la norme, mais je crois avoir eu des problèmes dans le passé avec ce type... cela fait longtemps et je ne saurais plus dire sur quel type de plateforme.
Yann -- Yann Renard - To send me an email, remove no-spam sectionS :)
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima
<michel.decima@orange-ft.com>:
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours.
Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme
bool (et est convertible en un bool), mais dont l'argument template
sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
bool machin=true; // ;)
Bref, je sais que bool est a priori défini dans la norme, mais je crois
avoir eu des problèmes dans le passé avec ce type... cela fait longtemps
et je ne saurais plus dire sur quel type de plateforme.
Yann
--
Yann Renard - To send me an email, remove no-spam sectionS :)
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
bool machin=true; // ;)
Bref, je sais que bool est a priori défini dans la norme, mais je crois avoir eu des problèmes dans le passé avec ce type... cela fait longtemps et je ne saurais plus dire sur quel type de plateforme.
Yann -- Yann Renard - To send me an email, remove no-spam sectionS :)
Michel Decima
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre de declarations. Question: est ce que 'machin' peut changer de valeur ? En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima
<michel.decima@orange-ft.com>:
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours.
Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme
bool (et est convertible en un bool), mais dont l'argument template
sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre
de declarations. Question: est ce que 'machin' peut changer de valeur ?
En particulier, est ce que je pourrait ecrire ceci:
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre de declarations. Question: est ce que 'machin' peut changer de valeur ? En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Michel Decima
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
bool machin=true; // ;)
Je pense l'ecriture de Fabien concernait la declaration d'un membre d'une classe, et dans ce cas on ne peut pas faire l'initialisation immediatement avec machin=true (faut attendre d'etre dans un constructeur).
Bref, je sais que bool est a priori défini dans la norme, mais je crois avoir eu des problèmes dans le passé avec ce type... cela fait longtemps et je ne saurais plus dire sur quel type de plateforme.
bool est defini dans la norme, sans aucun a-priori. Je veux bien admettre que certains compilateurs antediluviens n'implémentaient pas bool, mais ca ne me semble pas une raison suffisante pour ne pas utiliser ce type. J'aurais plutot tendance a utiliser bool directement si (puisque) mon compilateur le supporte, et je commencerais a penser a une solution de remplacement seulement si le probleme vient a se poser et qu'on ne peut pas mettre a jour le compilo.
Fabien LE LEZ wrote:
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima
<michel.decima@orange-ft.com>:
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours.
Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme
bool (et est convertible en un bool), mais dont l'argument template
sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
bool machin=true; // ;)
Je pense l'ecriture de Fabien concernait la declaration d'un membre
d'une classe, et dans ce cas on ne peut pas faire l'initialisation
immediatement avec machin=true (faut attendre d'etre dans un constructeur).
Bref, je sais que bool est a priori défini dans la norme, mais je crois
avoir eu des problèmes dans le passé avec ce type... cela fait longtemps
et je ne saurais plus dire sur quel type de plateforme.
bool est defini dans la norme, sans aucun a-priori. Je veux bien
admettre que certains compilateurs antediluviens n'implémentaient pas
bool, mais ca ne me semble pas une raison suffisante pour ne pas
utiliser ce type. J'aurais plutot tendance a utiliser bool directement
si (puisque) mon compilateur le supporte, et je commencerais a penser
a une solution de remplacement seulement si le probleme vient a se
poser et qu'on ne peut pas mettre a jour le compilo.
On Wed, 30 Aug 2006 11:30:22 +0200, Michel Decima :
pourquoi ne pas utiliser le type bool qui fait partie du langage ?
Il ne suffit pas toujours. Par exemple, j'ai un type "Booleen", qui fonctionne à peu près comme bool (et est convertible en un bool), mais dont l'argument template sert d'initialiseur.
Ainsi, je peux écrire, comme membre d'une classe :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
bool machin=true; // ;)
Je pense l'ecriture de Fabien concernait la declaration d'un membre d'une classe, et dans ce cas on ne peut pas faire l'initialisation immediatement avec machin=true (faut attendre d'etre dans un constructeur).
Bref, je sais que bool est a priori défini dans la norme, mais je crois avoir eu des problèmes dans le passé avec ce type... cela fait longtemps et je ne saurais plus dire sur quel type de plateforme.
bool est defini dans la norme, sans aucun a-priori. Je veux bien admettre que certains compilateurs antediluviens n'implémentaient pas bool, mais ca ne me semble pas une raison suffisante pour ne pas utiliser ce type. J'aurais plutot tendance a utiliser bool directement si (puisque) mon compilateur le supporte, et je commencerais a penser a une solution de remplacement seulement si le probleme vient a se poser et qu'on ne peut pas mettre a jour le compilo.
Fabien LE LEZ
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre de declarations.
J'avoue n'avoir rien trouvé de mieux. Balancer l'initialisation dans le constructeur est encore moins lisible.
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*]. Par contre tu pourrais écrire : Booleen<true> machin; machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
[*] Grosso modo, ça donne :
template <bool valeur_initiale> class Booleen { private: bool valeur;
public: Booleen() : valeur (valeur_initiale) {} /* Ici, toutes les fonctions qui permettent d'utiliser cette classe comme un bool */ };
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima
<michel.decima@orange-ft.com>:
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre
de declarations.
J'avoue n'avoir rien trouvé de mieux.
Balancer l'initialisation dans le constructeur est encore moins
lisible.
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit
Booleen<true> machin const;
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
Par contre tu pourrais écrire :
Booleen<true> machin;
machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
[*] Grosso modo, ça donne :
template <bool valeur_initiale> class Booleen
{
private:
bool valeur;
public:
Booleen() : valeur (valeur_initiale) {}
/* Ici, toutes les fonctions qui permettent d'utiliser cette classe
comme un bool */
};
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre de declarations.
J'avoue n'avoir rien trouvé de mieux. Balancer l'initialisation dans le constructeur est encore moins lisible.
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*]. Par contre tu pourrais écrire : Booleen<true> machin; machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
[*] Grosso modo, ça donne :
template <bool valeur_initiale> class Booleen { private: bool valeur;
public: Booleen() : valeur (valeur_initiale) {} /* Ici, toutes les fonctions qui permettent d'utiliser cette classe comme un bool */ };
Michel Decima
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne. Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre
de declarations.
J'avoue n'avoir rien trouvé de mieux.
Je le comprends.
Balancer l'initialisation dans le constructeur est encore moins lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises (parce que la technique en question marche pour des entiers, mais avec un double ou une chaine de caracteres ou...)
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Effectivement, mais en gardant a l'esprit la necessite de lisibilite ca va etre difficile ;)
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre la valeur 'false'.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible (et utilisee), j'aurais du mal a comprendre du premier coup d'oeil ce qui se passe reellement.
Par contre tu pourrais écrire : Booleen<true> machin; machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
Effectivement.
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima
<michel.decima@orange-ft.com>:
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur
la même ligne.
Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre
de declarations.
J'avoue n'avoir rien trouvé de mieux.
Je le comprends.
Balancer l'initialisation dans le constructeur est encore moins
lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises
(parce que la technique en question marche pour des entiers, mais avec
un double ou une chaine de caracteres ou...)
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Effectivement, mais en gardant a l'esprit la necessite de lisibilite
ca va etre difficile ;)
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit
Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre
la valeur 'false'.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible
(et utilisee), j'aurais du mal a comprendre du premier coup d'oeil ce
qui se passe reellement.
Par contre tu pourrais écrire :
Booleen<true> machin;
machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
On Wed, 30 Aug 2006 12:01:38 +0200, Michel Decima :
Booleen<true> machin;
et zou, j'ai la déclaration de la variable et son initialisation sur la même ligne. Je vois ce que tu veux dire, mais je ne suis pas sur d'aimer ce genre
de declarations.
J'avoue n'avoir rien trouvé de mieux.
Je le comprends.
Balancer l'initialisation dans le constructeur est encore moins lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises (parce que la technique en question marche pour des entiers, mais avec un double ou une chaine de caracteres ou...)
Peut-être pourrait-on améliorer le nom de cette classe, toutefois.
Effectivement, mais en gardant a l'esprit la necessite de lisibilite ca va etre difficile ;)
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre la valeur 'false'.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible (et utilisee), j'aurais du mal a comprendre du premier coup d'oeil ce qui se passe reellement.
Par contre tu pourrais écrire : Booleen<true> machin; machin= false;
Note qu'un Booleen<> n'a d'utilité que comme membre d'une classe.
Effectivement.
Fabien LE LEZ
On Wed, 30 Aug 2006 13:19:00 +0200, Michel Decima :
Balancer l'initialisation dans le constructeur est encore moins lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises (parce que la technique en question marche pour des entiers, mais avec un double ou une chaine de caracteres ou...)
En pratique, j'ai souvent besoin de booléens pré-initialisés dans des classes assez grosses.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre la valeur 'false'.
Oui. Sinon, ce serait un static bool machin const= true;
C'est pour ça que le nom est peut-être mal choisi.
Mais en pratique, la variable "machin" est utilisée comme un "bool", et le type Booleen<> est oublié.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible (et utilisee),
Ça n'aurait aucun intérêt. Si on peut initialiser la variable tout de suite, bool convient mieux.
En fait, peut-être devrais-je faire une classe plus générale, utilisable un peu de la même façon :
Initialiseur <bool, true> machin;
On Wed, 30 Aug 2006 13:19:00 +0200, Michel Decima
<michel.decima@orange-ft.com>:
Balancer l'initialisation dans le constructeur est encore moins
lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises
(parce que la technique en question marche pour des entiers, mais avec
un double ou une chaine de caracteres ou...)
En pratique, j'ai souvent besoin de booléens pré-initialisés dans des
classes assez grosses.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit
Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre
la valeur 'false'.
Oui. Sinon, ce serait un
static bool machin const= true;
C'est pour ça que le nom est peut-être mal choisi.
Mais en pratique, la variable "machin" est utilisée comme un "bool",
et le type Booleen<> est oublié.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible
(et utilisee),
Ça n'aurait aucun intérêt. Si on peut initialiser la variable tout de
suite, bool convient mieux.
En fait, peut-être devrais-je faire une classe plus générale,
utilisable un peu de la même façon :
On Wed, 30 Aug 2006 13:19:00 +0200, Michel Decima :
Balancer l'initialisation dans le constructeur est encore moins lisible.
Mais c'est coherent avec le reste des membres qui y seront initialises (parce que la technique en question marche pour des entiers, mais avec un double ou une chaine de caracteres ou...)
En pratique, j'ai souvent besoin de booléens pré-initialisés dans des classes assez grosses.
Question: est ce que 'machin' peut changer de valeur ?
Oui. Sinon j'aurais écrit Booleen<true> machin const;
Certes. Je voulais dire: est ce que 'Boolean<true>' peut prendre la valeur 'false'.
Oui. Sinon, ce serait un static bool machin const= true;
C'est pour ça que le nom est peut-être mal choisi.
Mais en pratique, la variable "machin" est utilisée comme un "bool", et le type Booleen<> est oublié.
En particulier, est ce que je pourrait ecrire ceci:
Booleen<true> machin = false;
Non. Le constructeur de Booleen n'accepte aucun argument[*].
C'est deja pas mal, parce que si l'ecriture ci-dessus etait possible (et utilisee),
Ça n'aurait aucun intérêt. Si on peut initialiser la variable tout de suite, bool convient mieux.
En fait, peut-être devrais-je faire une classe plus générale, utilisable un peu de la même façon :