В C++ не хватает степеней "публичности" для элементов классов. В [больном на голову] коде часто встречается такое:
class Foo : public Bar {
public:
enum One { one = 1 };
enum Two { two = 2 };
public:
Foo(int n);
virtual ~Foo(); // the empty body is defined elsewere
public:
int val;
protected:
enum Three { three = /* a lot */ one +
(
Read more... )