Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Re: enum count (http://www.velocityreviews.com/forums/t276064-re-enum-count.html)

 Klaus Eichner 07-26-2003 01:53 PM

Re: enum count

"Clive" <clive@clive.clive> wrote in message
news:3f21e5cc\$0\$23611\$5a62ac22@freenews.iinet.net. au...
> If you have an enum, is there any way during execution to find the number

of
> values in the enum?
> Say I have,
>
> enum great { five, ten, fifteen };
>
> How could I get the number 3 from that?

You could get the number 3 from 'great' with your own, user-defined
'Enum_Info' template:

cout << "The number of values in enum great is "
<< Enum_Info<great>::number_of_elements
<< endl;

The 'Enum_Info' template is defined as follows.
Suppose you have the following enums:

enum great { five, ten, fifteen };
enum greater { none, one, fourtytwo, fourtythree, fourtyfour };
enum even_greater { minusone, minustwo, minusthree, minusfour, minusfive,
minussix, minusseven };

You could build a template class 'Enum_Info' which uses specialisation to
register the number of elements in each enum

template <class T> class Enum_Info { };
template <> class Enum_Info<great> { static const int number_of_elements =
3; };
template <> class Enum_Info<greater> { static const int number_of_elements =
5; };
template <> class Enum_Info<even_greater> { static const int
number_of_elements = 7; };

 All times are GMT. The time now is 03:38 PM.