enums nested in a class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// forward declaration, doesn't work
// enum  Cage::Bird;

class Cage
{
	Cage::Bird f_bird;
	
public:	
	Cage( Cage::Bird bird) : f_bird(bird) {}
	enum Bird{ Nightingal,  Sparrow };
};

int main() {
	Cage::Bird my_pet = Cage::Sparrow;
}


What's the right way nesting an enum inside a class?
Sth. like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>

using namespace std;

class Cage
{
public:
  enum Bird
  {
    Nightingal, Sparrow
  };
  Cage (Bird bird) : f_bird (bird) {}
  Bird getBird ()
  {
    return f_bird;
  }
private:
  Bird f_bird;
};


int main ()
{
  Cage::Bird my_pet = Cage::Sparrow;
  cout << "my_pet " << (int)my_pet << "\n\n";

  Cage cage (Cage::Nightingal);
  cout << "cage bird: " << (int)cage.getBird () << "\n\n";

  return 0;
}
Thank you, Thomas!
Topic archived. No new replies allowed.