'class::identifier': illegal private access declaration
The public or protected part of a derived class can adjust access to a member of a base class. The private part cannot.
Example
struct X { private: int priv; protected: int prot; public: int pub; }; struct A : public X { private: X::priv; // error X::prot; // error X::pub; // error }; struct B : protected X { private: X::priv; // error X::prot; // error X::pub; // error }; struct C : private X { private: X::priv; // error X::prot; // error X::pub; // error };