Why doesn't this work unless i comment out "public:" before class aa?
Code:
class a{
//public:
	class aa{
	public:
		aa(){};
		aa(int x,int y){};
	};
	class ab{
		aa _aa;
	public:
		ab(){_aa=aa(1,2);};
	};
};
It complains that it can't access underlined line from with the bold statement.

Quote from http://www.icce.rug.nl/docs/cplusplus/cplusplus16.html
The constructor SecondWithin() and the member function getVar() of the class SecondWithin can also only be reached by the members of Surround (and by the members of its nested classes).
Which seems not to be the case in VC++