constructeur dans enum....

constructeur dans enum.... - C++ - Programmation

Marsh Posté le 31-12-2004 à 12:44:16    

Code :
  1. // un enum...
  2. enum e { a = 1, b = 2 };
  3. //une fonction
  4. template< int val >
  5. e fonction() { return val; }


 
Le compilateur ne semble pas en mesure de convertir un int en un enum ? D'ou l'idée de coder un constructeur e( const int& )... c'est possible ou j'ai révé ? Une fonction libre alors... ou une autre démarche plus sympa ?


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 31-12-2004 à 12:44:16   

Reply

Marsh Posté le 31-12-2004 à 13:49:06    

Je suis pas sur de comprendre ce que tu recherches ... je te mets une alternative (toujours sans avoir bien saisie) :
 

Code :
  1. // un type e (avec 2 variables de type int)
  2. typedef enum { a = 1, b = 2 } e;
  3. //une fonction
  4. template <int val>
  5. e fonction() { return val; }


 
Ca devrait compiler sans problèmes, apres le resultat...
 
 
 

Citation :

Le compilateur ne semble pas en mesure de convertir un int en un enum ?


En tout cas, ce que je peux t'affirmer, c'est qu'un type énumératif (enum) et un int sont considérés comme différents (pourtant de meme nature nan ?)


Message édité par ouned-coding le 31-12-2004 à 14:10:43
Reply

Marsh Posté le 31-12-2004 à 14:25:58    

L'erreur est au niveau de return val; sachant que la conversion enum vers int n'est pas possible. Le contraire l'est pourtant.
 
Je pensais que faire un template avec un type enum n'etait pas possible. En fait, c'est possible. La solution est donc évidente :

Code :
  1. template<e val>
  2. e fonction(){return val; }


Ca compile.


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 31-12-2004 à 14:32:25    

:) ben moi vais me compiler un template de steak et piperade en espagne.
 
bonne journée


Message édité par ouned-coding le 31-12-2004 à 14:33:50
Reply

Marsh Posté le 31-12-2004 à 14:44:22    

throw buen_apetito();


---------------
Cordialement, Xterm-in'Hate...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed