Доступ к данным закрытого члена внешнего класса во внутреннем классе

Вот этот код:

#include 

class Outer{
    int a; // private data member of class Outer
public:
    Outer(): a(55){}
    class Inner{
    public:
        void fun(Outer ob){
            std::cout << ob.a << std::endl;
        }
    };
};

int main() {

    Outer::Inner object;
    object.fun(Outer()); // prints 55
    //std::cout << (Outer().a) << std::endl; error: 'int Outer::a' is private

    return 0;
} 

Почему внутренний класс имеет доступ к данным закрытого члена 'a' класса Внешний? Следуя этой статье XL C / C ++ V8.0 для Linux , он не должен компилироваться, однако он компилируется на g ++ 4.4.0.

7
задан scdmb 15 January 2012 в 13:18
поделиться