1) Est ce que c'est, d'apres vous, une "bonne" facon de faire?
2) Si oui (mais je pense que non), j'ai un pb:
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui
donne apres le preproceseur:
enum MON_ENUM
{
1 = 0,
SEMI_RELATIVE = 1,
RELATIVE = 2
};
ce qui ne marche pas forcement tres bien..;-)
Qq1 parmi vous aurait il un conseil pour eviter ce genre de problemes?
En esperant que ma question ne soit pas trop con...
1) Est ce que c'est, d'apres vous, une "bonne" facon de faire? 2) Si oui (mais je pense que non), j'ai un pb: ABSOLUTE est deja declaree comme constantes dans certains headers ce qui donne apres le preproceseur: enum MON_ENUM { 1 = 0, SEMI_RELATIVE = 1, RELATIVE = 2 };
ce qui ne marche pas forcement tres bien..;-)
Qq1 parmi vous aurait il un conseil pour eviter ce genre de problemes?
En esperant que ma question ne soit pas trop con...
Merci d'avance, Benoit
C'est une bonne manière de procéder, maintenant, 1. est ce que c'est opportun d'avoir des noms en majuscule ? Personnellement, je considère que les noms en majuscule sont à éviter sauf pour les #define. Les identificateurs d'enum sont de préférence en minusucle et "_" pour séparer les mots.
2. si tu tiens à avoir les noms en majuscule, utilises tu la constante ABSOLUTE, si ce n'est pas le cas, tu peux faire un #undef ABSOLUTE avant que le compilo passe par ce code.
Cordialement
Bruno
blc wrote:
Bonjour a tous (et a toutes aussi)
Je cherche a definir une "suite" de constantes.
Je fais un truc du genre:
1) Est ce que c'est, d'apres vous, une "bonne" facon de faire?
2) Si oui (mais je pense que non), j'ai un pb:
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui
donne apres le preproceseur:
enum MON_ENUM
{
1 = 0,
SEMI_RELATIVE = 1,
RELATIVE = 2
};
ce qui ne marche pas forcement tres bien..;-)
Qq1 parmi vous aurait il un conseil pour eviter ce genre de problemes?
En esperant que ma question ne soit pas trop con...
Merci d'avance,
Benoit
C'est une bonne manière de procéder, maintenant,
1. est ce que c'est opportun d'avoir des noms en majuscule ?
Personnellement, je considère que les noms en majuscule sont à éviter
sauf pour les #define. Les identificateurs d'enum sont de préférence en
minusucle et "_" pour séparer les mots.
2. si tu tiens à avoir les noms en majuscule, utilises tu la constante
ABSOLUTE, si ce n'est pas le cas, tu peux faire un #undef ABSOLUTE avant
que le compilo passe par ce code.
1) Est ce que c'est, d'apres vous, une "bonne" facon de faire? 2) Si oui (mais je pense que non), j'ai un pb: ABSOLUTE est deja declaree comme constantes dans certains headers ce qui donne apres le preproceseur: enum MON_ENUM { 1 = 0, SEMI_RELATIVE = 1, RELATIVE = 2 };
ce qui ne marche pas forcement tres bien..;-)
Qq1 parmi vous aurait il un conseil pour eviter ce genre de problemes?
En esperant que ma question ne soit pas trop con...
Merci d'avance, Benoit
C'est une bonne manière de procéder, maintenant, 1. est ce que c'est opportun d'avoir des noms en majuscule ? Personnellement, je considère que les noms en majuscule sont à éviter sauf pour les #define. Les identificateurs d'enum sont de préférence en minusucle et "_" pour séparer les mots.
2. si tu tiens à avoir les noms en majuscule, utilises tu la constante ABSOLUTE, si ce n'est pas le cas, tu peux faire un #undef ABSOLUTE avant que le compilo passe par ce code.
Cordialement
Bruno
ben_cal
blc wrote:
Bonjour a tous (et a toutes aussi)
Je cherche a definir une "suite" de constantes. Je fais un truc du genre:
Finalement, j'ai mis toutes mes constantes dans un namespace ce qui me donne un truc du genre lorsque je les appelle:
MALIBNAMESPACE::CONSTANTS::default_value
L'avantage c'est que je vois tout de suite ou sont mes constantes et elles n'auront pas tendance a s'egarer dans la nature...
Benoit
Jean-Marc Molina
Bonjour Benoit,
L'avantage c'est que je vois tout de suite ou sont mes constantes et elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données dans les objets qui en ont besoin. Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur : mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un : MALIBNAMESPACE::CONSTANTS::ABSOLUTE
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas indui en erreur.
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum ? C'est le but de l'enum, fournir une valeur différente pour chaque attribut, automatiquement. Par contre tu peux décider d'affecter une valeur au premier attribut pour initialiser l'enum à une valeur donnée ou affecter des valeurs différentes à chaque enum pour une raison ou une autre, je pense aux masques utilisés par Microsoft par exemple (qui ne sont pas les seuls).
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui donne apres le preproceseur
J'ai relu ton message et j'avoue que je ne comprends plus ton problème. L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun conflit.
Bonne journée, JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Bonjour Benoit,
L'avantage c'est que je vois tout de suite ou sont mes constantes et
elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données
dans les objets qui en ont besoin.
Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots
magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à
d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur :
mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un :
MALIBNAMESPACE::CONSTANTS::ABSOLUTE
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne
parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas
indui en erreur.
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum
? C'est le but de l'enum, fournir une valeur différente pour chaque
attribut, automatiquement. Par contre tu peux décider d'affecter une valeur
au premier attribut pour initialiser l'enum à une valeur donnée ou affecter
des valeurs différentes à chaque enum pour une raison ou une autre, je pense
aux masques utilisés par Microsoft par exemple (qui ne sont pas les seuls).
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui
donne apres le preproceseur
J'ai relu ton message et j'avoue que je ne comprends plus ton problème.
L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu
définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun
conflit.
Bonne journée,
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
L'avantage c'est que je vois tout de suite ou sont mes constantes et elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données dans les objets qui en ont besoin. Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur : mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un : MALIBNAMESPACE::CONSTANTS::ABSOLUTE
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas indui en erreur.
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum ? C'est le but de l'enum, fournir une valeur différente pour chaque attribut, automatiquement. Par contre tu peux décider d'affecter une valeur au premier attribut pour initialiser l'enum à une valeur donnée ou affecter des valeurs différentes à chaque enum pour une raison ou une autre, je pense aux masques utilisés par Microsoft par exemple (qui ne sont pas les seuls).
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui donne apres le preproceseur
J'ai relu ton message et j'avoue que je ne comprends plus ton problème. L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun conflit.
Bonne journée, JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
ben_cal
Jean-Marc Molina wrote:
Bonjour Benoit,
L'avantage c'est que je vois tout de suite ou sont mes constantes et
elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données dans les objets qui en ont besoin. Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur : mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un : MALIBNAMESPACE::CONSTANTS::ABSOLUTE En fait, je viens de me rendre compte que j'ai "mixe" 2 prolemes en une
seule reponse ce qui est malheureusement frequent chez moi...si qq1 connait le nom exact de cette maladie, ca permettrait a mon medecin d'avancer un peu plus vite...et inutile de repondre: [HS] fr.comp.lang.c++.psychanalyse
;-D
Effectivement, pour ce qui est des enums particulier a une classe, ca marche comme ca et c sans doute mieux mais j'ai forcement eu le meme probleme avec des constantes que j'ai renommees (avec des minuscules apres avoir considere les differents "combats" ayant eu lieu sur ce thread...)et mises dans un namespace....pour etre sur...
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas indui en erreur. Non, non, rassure toi, je me suis enduit d'erreurs tout seul..,-D
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum ? Je ne me rappelle plus mais il me semble avoir entendu qu'il fallait
faire ca..mais j'avoue que je ne me souviens plus de la raison exacte...
J'ai relu ton message et j'avoue que je ne comprends plus ton problème. L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun conflit. En fait, il s'agit d'une macro qui avait le meme nom qu'une valeur de
mon enum et donc, le preprocesseur changeait le ABSOLUTE de mon enum en 1....
A+ et merci beaucoup, Benoit
Jean-Marc Molina wrote:
Bonjour Benoit,
L'avantage c'est que je vois tout de suite ou sont mes constantes et
elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données
dans les objets qui en ont besoin.
Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots
magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à
d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur :
mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un :
MALIBNAMESPACE::CONSTANTS::ABSOLUTE
En fait, je viens de me rendre compte que j'ai "mixe" 2 prolemes en une
seule reponse ce qui est malheureusement frequent chez moi...si qq1
connait le nom exact de cette maladie, ca permettrait a mon medecin
d'avancer un peu plus vite...et inutile de repondre:
[HS] fr.comp.lang.c++.psychanalyse
;-D
Effectivement, pour ce qui est des enums particulier a une classe, ca
marche comme ca et c sans doute mieux mais j'ai forcement eu le meme
probleme avec des constantes que j'ai renommees (avec des minuscules
apres avoir considere les differents "combats" ayant eu lieu sur ce
thread...)et mises dans un namespace....pour etre sur...
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne
parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas
indui en erreur.
Non, non, rassure toi, je me suis enduit d'erreurs tout seul..,-D
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum
?
Je ne me rappelle plus mais il me semble avoir entendu qu'il fallait
faire ca..mais j'avoue que je ne me souviens plus de la raison exacte...
J'ai relu ton message et j'avoue que je ne comprends plus ton problème.
L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu
définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun
conflit.
En fait, il s'agit d'une macro qui avait le meme nom qu'une valeur de
mon enum et donc, le preprocesseur changeait le ABSOLUTE de mon enum en
1....
L'avantage c'est que je vois tout de suite ou sont mes constantes et
elles n'auront pas tendance a s'egarer dans la nature...
C'est un peu anti-OO mais bon... Le principe c'est d'encapsuler ses données dans les objets qui en ont besoin. Ici rien ne lie tes enums à tes objets (sauf les préfixes et autres "mots magiques"). Ça peut devenir très chaotique si tu adoptes cette logique à d'autres concepts... On va se retrouver à programmer en C à cette allure :)
Niveau accès tu retombes sur : mon_namespace::ma_classe:MON_ENUM_ABSOLUTE
Je pense que c'est bien plus logique qu'un : MALIBNAMESPACE::CONSTANTS::ABSOLUTE En fait, je viens de me rendre compte que j'ai "mixe" 2 prolemes en une
seule reponse ce qui est malheureusement frequent chez moi...si qq1 connait le nom exact de cette maladie, ca permettrait a mon medecin d'avancer un peu plus vite...et inutile de repondre: [HS] fr.comp.lang.c++.psychanalyse
;-D
Effectivement, pour ce qui est des enums particulier a une classe, ca marche comme ca et c sans doute mieux mais j'ai forcement eu le meme probleme avec des constantes que j'ai renommees (avec des minuscules apres avoir considere les differents "combats" ayant eu lieu sur ce thread...)et mises dans un namespace....pour etre sur...
Surtout si tu accèdes à cette constante depuis la classe ma_classe. Et je ne parle même pas des éventuels ENUM private dont tu auras sans doute besoin.
Je n'ai pas lu tous les commentaires mais j'espère que quelqu'un ne t'a pas indui en erreur. Non, non, rassure toi, je me suis enduit d'erreurs tout seul..,-D
Dernières remarques, pourquoi affectes-tu des valeurs à tes attributs d'enum ? Je ne me rappelle plus mais il me semble avoir entendu qu'il fallait
faire ca..mais j'avoue que je ne me souviens plus de la raison exacte...
J'ai relu ton message et j'avoue que je ne comprends plus ton problème. L'enum est encapsulé dans une classe, pourquoi y aurait-il conflit ? Si tu définis une autre classe ma_classe2 avec le même enum ça fonctionne, aucun conflit. En fait, il s'agit d'une macro qui avait le meme nom qu'une valeur de
mon enum et donc, le preprocesseur changeait le ABSOLUTE de mon enum en 1....