overloaded functions 'class::function' do not have same access
Overloaded functions named in an access declaration have different access levels (public, private, or protected). As a result, access levels cannot be adjusted.
Example
struct X { private: int f(); protected: int f(int); public: int f(int,int); }; struct A : public X { protected: X::f; // error public: X::f; // error }; struct B : protected X { protected: X::f; // error public: X::f; // error }; struct C : private X { protected: X::f; // error public: X::f; // error };