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

  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] Evitez enumeral mismatch ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Evitez enumeral mismatch ?

n°473215
Joel F
Real men use unique_ptr
Posté le 31-07-2003 à 14:46:11  profilanswer
 

Bon, j'ai une hierarchie de classe template qui contiennent toutes une enumeration appelé vec_size qui contient la taille de la donnée (na je ferais pas autrement).
 
A un moment j'ai cette situation :
 

Code :
  1. // class binary_node
  2. // Expession Templates placeholder for binary node in AST representation
  3. template<class OP, class LHS, class RHS> class binary_node
  4. {
  5.     public:
  6.     typedef typename LHS::elt_t elt_t;
  7.     typedef LHS     lhs_t;       
  8.     typedef RHS     rhs_t; 
  9.    
  10.     enum {vec_size =( LHS::vec_size==0 ? (LHS::vec_size) : (RHS::vec_size) )};
  11.     binary_node( const lhs_t& lhs, const rhs_t& rhs ) : mLHS(lhs),mRHS(rhs) {}
  12.                
  13.     lhs_t&  getLHS() const    { return mLHS; }
  14.     rhs_t&  getRHS() const    { return mRHS; }
  15.     elt_t operator[]( size_t i ) { return OP::apply(mLHS[i],mRHS[i]); }       
  16.     private:
  17.     lhs_t mLHS;
  18.     rhs_t mRHS;
  19. };

 
 
si je compile je me prends le warning suivant :
 

Code :
  1. warning: enumeral mismatch in conditional expression:

 
 
La doc de GCC me dit d'utilisez -fcond-mismatch mais cette option est désactivée  :/
le seul moyen que j'ai est de caster comme un porc mes enums en int
 

Code :
  1. enum {vec_size =( LHS::vec_size==0 ? (int)(LHS::vec_size) : (int)(RHS::vec_size) )};

 
 
je trouve ca moche .... y aurait il un equivalent de -fcond-mismatch valide e C+ ???


Message édité par Joel F le 31-07-2003 à 14:58:56
mood
Publicité
Posté le 31-07-2003 à 14:46:11  profilanswer
 

n°473241
Taz
bisounours-codeur
Posté le 31-07-2003 à 14:52:33  profilanswer
 

ben passe par une IfThenElse template. je touve ça laid ton ecriture, je sait meme pas si c'est possible

n°473245
Joel F
Real men use unique_ptr
Posté le 31-07-2003 à 14:54:04  profilanswer
 

C'est possible et ca marche et c standard :D ...  
mmm un IfThen template n'y fera rien car l'enum RESULTAT du IfThen sera d'un type différent de l'enum de BinaryNode. ...
 
je cherche plutôt le swithc de gcc pour faire taire le warning.

n°473251
Taz
bisounours-codeur
Posté le 31-07-2003 à 14:55:45  profilanswer
 

à ben OK, fallait tout nous dire... ben cast alors... ou vire tes enums et utilises des constantes static

n°473256
Joel F
Real men use unique_ptr
Posté le 31-07-2003 à 14:56:20  profilanswer
 

Ooops j'avais pas pensez au const :P
je teste.
 
 
EDIT : OK, les const int vec_size = LHS::vec_size ? etc ...
ca passe. Merci ;)


Message édité par Joel F le 31-07-2003 à 14:58:41

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

  [RESOLU] Evitez enumeral mismatch ?

 

Sujets relatifs
[php] Recuperer la valeur issue d'une listbox par $_GET (RESOLU)[JS] Vérifier une checkbox ? [résolu!]
[JAVA] URL du format : http://LOGIN:PASSWORD@ma-machi ne [RESOLU]Cookies accessibles n'importe où au sein d'un domaine [résolu]
RESOLU [C & GTK2]comment inclure ceci (prise de tête inside) [résolu]
[PHP] session_register(); => $_SESSION ? [résolu][VB] Sélection par clic droit dans une listbox ? [ résolu ! ]
***RESOLU***:/ Arrays à 3 dimensions, tables html et boucles foreach()[VBA] Executer une requete et récuple resultat dans le code.[RESOLU]
Plus de sujets relatifs à : [RESOLU] Evitez enumeral mismatch ?


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