class A { protected: int c(void) const { return 1;} int d(void) const { return 2;} }; class B : private A { public: using A::c; }; int main() { B b; int x; x = b.c(); // x = b.d(); // A &a = b; // x = a.d(); return 0; }