www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - enum help

reply Michael P. <baseball.mjp gmail.com> writes:
So, I'm having problems with enums.

Let's say I have this piece of code:

enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 }
void main()
{
Card MyCard;
MyCard = NINE;
}

I get an error saying that NINE is undefined and it cannot be implicitly
converted to type int. How would I make a Card variable get the value of NINE?
Aug 27 2008
next sibling parent "Denis Koroskin" <2korden gmail.com> writes:
On Wed, 27 Aug 2008 23:21:14 +0400, Michael P. <baseball.mjp gmail.com>  
wrote:

 So, I'm having problems with enums.

 Let's say I have this piece of code:

 enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 }
 void main()
 {
 Card MyCard;
 MyCard = NINE;
 }

 I get an error saying that NINE is undefined and it cannot be implicitly  
 converted to type int. How would I make a Card variable get the value of  
 NINE?

Try this:
 MyCard = Card.NINE;

Aug 27 2008
prev sibling next sibling parent reply Derek Parnell <derek psych.ward> writes:
On Wed, 27 Aug 2008 15:21:14 -0400, Michael P. wrote:

 enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 }
 void main()
 {
 Card MyCard;
 MyCard = NINE;
 }
 
 I get an error saying that NINE is undefined ...

This is because the enum declaration creates its own namespace. This is so you can disambiguate between different 'NINE' definitions... enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 } enum Pin { ONE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE } void main() { Card MyCard; Pin MyPins; MyCard = Card.NINE; MyPins = Pin.NINE; } -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Aug 27 2008
parent Michael P. <baseball.mjp gmail.com> writes:
Derek Parnell Wrote:

 On Wed, 27 Aug 2008 15:21:14 -0400, Michael P. wrote:
 
 enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 }
 void main()
 {
 Card MyCard;
 MyCard = NINE;
 }
 
 I get an error saying that NINE is undefined ...

This is because the enum declaration creates its own namespace. This is so you can disambiguate between different 'NINE' definitions... enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 } enum Pin { ONE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE } void main() { Card MyCard; Pin MyPins; MyCard = Card.NINE; MyPins = Pin.NINE; } -- Derek Parnell Melbourne, Australia skype: derek.j.parnell

Thanks, that worked. -Michael P.
Aug 28 2008
prev sibling parent Zarathustra <adam.chrapkowski gmail.com> writes:
Michael P. Wrote:

 So, I'm having problems with enums.
 
 Let's say I have this piece of code:
 
 enum Card { NINE = 0, JACK = 2, QUEEN = 3, KING= 4, TEN = 10, ACE = 11 }
 void main()
 {
 Card MyCard;
 MyCard = NINE;
 }
 
 I get an error saying that NINE is undefined and it cannot be implicitly
converted to type int. How would I make a Card variable get the value of NINE?

Use anymous enumerate, _______________________________________________ enum{ NINE = 0, JACK = 2, QUEEN = 3, KING = 4, TEN = 10, ACE = 11 } void main{ auto MyCard = NINE; } _______________________________________________ aliases _______________________________________________ enum Card{ NINE = 0, JACK = 2, QUEEN = 3, KING = 4, TEN = 10, ACE = 11 } alias Card.NINE NINE ; alias Card.JACK JACK ; alias Card.QUEEN QUEEN; alias Card.KING KING ; alias Card.TEN TEN ; alias Card.ACE ACE ; void main{ Card MyCard = NINE; } _______________________________________________ or namespace Card _______________________________________________ enum Card{ NINE = 0, JACK = 2, QUEEN = 3, KING = 4, TEN = 10, ACE = 11 } void main{ Card MyCard = Card.NINE; }
Aug 27 2008