Well, as far as I know, you can't do it with G++ (MSVC maybe). What would need to be done is some sort of a forward declaration of your private enum, but forward declaring enums doesn't comply to ansi c++, and therefore doesn't work with G++. (plus, I don't know how an anonymous enum could be forward declared anyway).
You can have multiple public: and private: sections in a class. What I would do is something like this:
Code:
class myClass
{
private:
enum{aa=2, bb=3};
public:
enum{a=aa, b=bb};
// public interface
private:
// the rest of the private functions & variables
}
In my opinion, that's very readable.